[ID3 Dev] 0-termination in text frames

Paul Taylor paul_t100 at fastmail.fm
Sat Mar 17 12:45:30 PDT 2007

Florian Heidenreich wrote:
> 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:
> <snip>
> 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.
> </snap>
> 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,
> Florian
I think it is just saying that if you use a null terminated string then 
you should terminate correctly for the encoding you use.
<text string according to encoding> does not include a null terminator, 
where a null terminator is required it is explicity stated in the spec
as these extracts show.

In the first case it states the items should be seperated by a null 
character, so there shouldnt be a null character for the last entry 
because it is not seperating anything.
In the second case a null terminator is always needed to seperate the 
description from the value.

4.2.   Text information frames

   The text information frames are often the most important frames,
   containing information like artist, album and more. There may only be
   one text information frame of its kind in an tag. All text
   information frames supports multiple strings, *stored as a null
   separated list,* *where null is reperesented by the termination code
   for the charater encoding.*

4.2.6.   User defined text information frame
Text encoding     $xx
     Description       <text string according to encoding> *$00 (00)*
     Value             <text string according to encoding>

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