[ID3 Dev] 0-termination in text frames

Florian Heidenreich support at mp3tag.de
Sat Mar 17 12:28:19 PDT 2007


Scott Wheeler wrote:
> Ben Bennett wrote:
>> The 2.4 implementations I've seen do not handle multiple substrings
>> (amarok, itunes).
> TagLib, used by Amarok does, but the Amarok GUI (and in fact the 
> "simple" TagLib API) does not.  They just take the first value.

Mp3tag also does :)

>>> So, if you write a 0 terminator at the end of the string, you
>>> definitely are on the safe side.
>> For 2.3 that is certainly true, but I am not so sure in the case of
>> 2.4.  If you have a terminator following the value then doesn't that
>> imply a 0-length item?
> Yes, I've mentioned that in the past.  It's a subtle distinction, but in 
> 2.4 a null terminated string technically indicates two strings, the 
> second one being empty.

Thanks all for your comments!

I'm still not sure about the issue. The ID3v2.4 spec from 
http://id3.org/id3v2.4.0-structure presents a list of possible encodings 
at '4. ID3v2 frame overview' where the terminating 0 is explicitly 
included in every text string:

Frames that allow different types of text encoding contains a text
    encoding description byte. Possible encodings:

      $00   ISO-8859-1 [ISO-8859-1]. Terminated with $00.
      $01   UTF-16 [UTF-16] encoded Unicode [UNICODE] with BOM. All
            strings in the same frame SHALL have the same byteorder.
            Terminated with $00 00.
      $02   UTF-16BE [UTF-16] encoded Unicode [UNICODE] without BOM.
            Terminated with $00 00.
      $03   UTF-8 [UTF-8] encoded Unicode [UNICODE]. Terminated with $00.

According to that list it seems to me, that every string includes a 
terminating $00 (or $00 00 when using UTF-16).

What do you think about it?

Thank you!

Kind regards,

To unsubscribe, e-mail: id3v2-unsubscribe at id3.org
For additional commands, e-mail: id3v2-help at id3.org

More information about the ID3v2 mailing list