freedb и кириллица

Разные проблемы звука, видео, обсуждение разных устройств и т.д.

Модератор: Модераторы разделов

Аватара пользователя
vr13
Сообщения: 885
ОС: gentoo

freedb и кириллица

Сообщение vr13 »

всем привет,

посмотрел в форуме на проблемы с кириллицей и их решение правкой тегов в треках (списанных с дисков или полученных другим способом). а можно ли как-нить добиться нормальных кириллических названий треков/дисков итд при воспроизведении аудио-дисков линуксными плеерами? я пробовал banshee и amarok, там - все одинаково плохо. banshee вообще-то некоторые диски отображает верно (два, кажется, из двух десятков пробованных мной)

предположив, что информация берется из free cddb (freedb.org), начал смотреть там и заметил следующее:
* в описании cddb говорится, что данные могут храниться там в us ascii, iso-8859p1 и utf8
* в базе все кириллическое хранится так, как положили (из виденого мной - все win1251, вероятно где-нить есть и koi8, и наверное что-нить еще :)
* современный протокол (proto 6) обмена данными всегда использует utf8

в результате, протокол берет однобайтные кириллические символы, интерпретирует их как западноевропейскую iso и, перекодируя в utf8 (latin supplement, latin extended-A,B) отдает клиенту. говоря проще, получается двойная перекодировка, результат которой видится на экране. например, список треков альбома

История Аквариума. Архив, т.3 96086e0b
0: Диплом
...
9: Серые камни на зеленой траве
10: Когда пройдет боль

видится таким образом

Èñòîðèÿ Àêâàðèóìà. Àðõèâ, ò.3 96086e0b
0: Äèïëîì
...
9: Ñåðûå êàìíè íà çåëåíîé òðàâå
10: Êîãäà ïðîéäåò áîëü

на всякий случай расскажу, что пробовалось мной:
* ошибочно полагая, что все плееры пользуются libcddb для доступа к freedb, я поковырял эту библиотеку
* увидел результат, который описан выше, поэкспериментировав с программированием этой библиотеки
* если немного поправить cddb (./include/cddb/cddb_ni.h), сказав что используется cddb протокол v5, на сервере все хранится в win1251, то все кириллица отображается

патчик к libcddb (актуальной версии, 1.3.0) и тестовая программка attached. в начале этого сообщения говорилось, что banshee в некоторых случаях отображает названия треков кириллицей, хотя в базе все хранится в win1251, т.е есть вероятность что там делается [не всегда успешная] попытка угадать, в какой кодировке записана информация в freedb

боролся-копался ли кто-нить с этим? удалось победить? каким образом? я не вижу способов, кроме как лезть в исходный текст того же banshee, но ради такой мелочи учить .net (mono) и c# не хочется - поэтому спрашиваю, может уже есть готовое? :)

спасибо
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали: