When a file contains an ID3V2 tag with unicode text and
an ID3V1 tag, the unicode data gets converted to ASCII
during the parsing process.
In id3::v1::parse() there are calls to
id3::v2::getTitle(), id3::v2::getArtist(), etc. These
functions call getFrameText() (in helpers.cpp) which
calls getString().
The problem is getString() first converts the current
data to ASCII, copies the raw text, then converts it
back to previous encoding. I'd say the reason for this
is that ID3_FieldImpl::GetRawText() won't return 8 bit
data unless the current encoding is set to ASCII.
What this basically means is that after first correctly
reading the unicode ID3V2 data, all international
characters are trashed when reading the ID3V1 data.
My current workaround is to remove the lines changing
the encoding in id3::v2::getString() and changing
ID3_FieldImpl::GetRawText() to always return the
current data, but i guess a more elegant solution could
be made.
Trent Fitzgibbon
Logged In: YES
user_id=1071443
This could be same problem as 872779