In particular, Jaikoz is messing up WXXX and TIPL frames that are UTF-16.
I’m using Jaikoz 4.3.1 NGS Pro.
\tID3TagV1 -> Delete
\tID3TagV2 -> Always write tag v24
\tDefault writing v24 is ISO-8859-1
\tText Encoding to use writing Unicode v24 is UTF-8
\tSave Existing Fields is checked
\t
I also use Helium Music Manager 8.1 Premium
\tSave tags as ID3v2.4
\tSave in Unicode
My workflow is to first tag using Jaikoz and save. Then open in Helium. Use AlbumArtDownloader. Then I tag with Helium to include the artwork and massage a couple of fields, save, rename and import into Helium’s database. At this point the tags are pretty and the file’s ready to play.
With Jaikoz, I reopened an album I had tagged earlier. I found the producer field changed to Chinese characters, the engineer field to be blank, and the Release Discogs Url field to be changed to 3 chars (Latin small y with diaeresis, Latin small letter thorn, h).
Without saving in Jaikoz, I viewed the tags in Helium. They were still pretty and correct. I made a change to the title field in Jaikoz and saved. I viewed the tags in Helium again, and now the WXXX and TIPL frames are broken.
So I went through these steps again, using a hex editor to watch the changes to the tags and compared with the ID3v24 docs.
After first tagging with Jaikoz, all text fields are ISO-8859-1. (Only thing, none of the fields are terminated with $00 as the standard suggests.) Every thing looks fine.
Next I tag with Helium. All the text fields are changed to UTF-16 and start with BOM (FF FE) little-endian. (Again, none of the fields are terminated with $00 00 as the standard suggests.) Everything still looks fine.
I tag again with Jaikoz, changing the title field. The text fields are back to ISO-8859-1 as before. But the WXXX and TIPL frames are now corrupt.
In particular, WXXX has a text encoding byte of $00 indicating ISO8859-1, it has a description of ‘DISCOGS_RELEASE’ $00. But the URL still looks like UTF-16. (FF FE 68 00 74 00 74 00 70 00 …) FF FE 68 get interpreted as the 3 chars I mentioned above and the 00 terminates the string.
The TIPL frame has a text encoding byte of $01 indicating UTF-16. It starts with BOM (FF FE), then ‘producer’ in little-endian UTF-16, followed by $00 00. Then it incorrectly has another BOM (FF FE) and the data, but the data looks like big-endian UTF-16. You can’t switch endian in frame. This time field is terminated with $00 00.
Thanks
…Harold