Потестировал я кодировки. Для тех файлов, где теги UTF8/16 исправил.
А вот что делать с остальными - непонятно. Вместо того, чтобы перекодировать строку, хотя бы с дефолтными системными настройками, библиотека их отдает в очень оригинальном виде. Вот так выглядит строка "Каратэ":
Т.е. берется каждый символ кириллицы, и к нему вторым байтом добавляется 0x00. И это очень плохо, поскольку полученные таким образом "юникодные" символы формально валидны, и отображают те европейские символы, что мы и видим. Как понять, что выданный поток - реальный юникод или вот такой "псевдоюникод" - не представляю.
Пробовал ANSI версию функции - она выдает уже искаженный текст.
[s]Но что самое удивительное, если получать информацию функцией "MediaInfo_Inform" (которую использует листерная часть), то теги возвращаются правильно закодированными во всех случаях.[/s]