For a while now I’ve been noticing that certain songs’ ID3 tags are broken when played on my Android phone. I use Black Player which in turn uses the built in Android music libraries – but I’ve checked in a number of other players too just in case and the problem persists.
My music library is extremely multilingual (and most of those languages I don’t even speak), so it’s full of UTF characters. Some of them seem to break Android’s encoding recognition. Sadly some of these triggers are pretty common, resulting in borked last.fm scrobbles. (And of course last.fm can’t be expected to be so smart as to fix all those automatically.)
So far I’ve noticed that the Hungarian ű and ő characters cause problems. If a field contains either of them, the rest of non-ASCII characters are rendered broken too, but if these two are not present, other characters (such as á or ö) are rendered correctly. Certain Japanese characters seem to trigger it too, but I haven’t been able to pinpoint which characters exactly (since there are so many).
It’s my Macross Delta Walküre albums getting messed up all the time, but weirdly I haven’t noticed problems with any other Japanese artists. I’ve triple checked and force-reencoded all my library’s ID3 tags, so that should not be an issue. Music players on my computer (Clementine, foobar2000) are able to read the tags properly too.
I suspected that this might be related to how ID3v2.3 only uses UTF-16, so I tried to use UTF-8 encoded ID3v2.4, but Android couldn’t read those tags at all.
At this point I’m out of ideas as for how could I fix this – other than actually finding the problematic code points in the Android music source and fixing them myself. Let’s just say I’m not thrilled by the idea of having to hack Android Java just to get my music tags render correctly.
Hello, same issue here. I’ve been using Black Player, it suited me great. Automatic playing when BT connected, last.fm scrobbling support etc. Really beautiful player. But when I loaded my library with songs ID3-UTF16 tagged with Czech, Hungarian etc. characters, I had to let Black Player go because of the character problem. I’ve tried many and many players but is seems that majority of Android players are using built-in android library and id3 tag recognition which is causing that these players are affected by this issue. Only player which is able to read these ID3 tags correctly, or in most cases correctly, is VLC. It seems that VLC uses it’s own way reading ID3 tags and is able to read the UTF-16 tags correctly. This is my workaround now because I was not able to find any other solution how to force android to read my ID3 tags correctly…
I’ve been using Rocket Player, which can handle my very mixed library correctly without any of the tag encoding hacking I’ve attempted.
Android tries to guess the charset even when you use UTF-8 everywhere and it often fails spectacularly.
However, I’ve found a fairly simple fix that tricks Android into always interpreting the tags as UTF. It involves editing your MP3s and putting characters with unmistakable encoding in the comment field. For instance “Android fix アンドロイド”. Both ID3v2.3 and ID3v2.4 seem to work great with this fix. I also removed ID3v1 just in case.