Zakhary Akulov wrote: > Занялся вот перекодированием звуковых файлов в mp3 и столкнулся с > неприятностью -- lame записывает кириллические теги в непонятной > кодировке:
В id3v2 допустимо применять либо кодировку latin1, либо одну из уникодных (их и используют для кириллицы). Проблема в том, что и lame и id3v2 работают только с latin1, независимо от локали. Строку в UTF-8 lame интерпретирует как простой набор 8-битных байтов, а id3v2 этот набор достаёт и без преобразования выводит. mid3v2 же честно пытается перевести её из указанной кодировки latin1 в кодировку локали (UTF-8). Для иллюстрации попробуем теги в cp1251 (кодировка терминала UTF-8): $ export LANG=ru_RU.cp1251 $ lame --id3v2-only --pad-id3v2 --ta "$(echo "Пример тега"|iconv -f utf8 -t cp1251)" Sample.wav $ id3v2 -l Sample.wav.mp3|grep TPE1 TPE1 (Lead performer(s)/Soloist(s)): ������ ���� $ id3v2 -l Sample.wav.mp3|grep TPE1|iconv -f cp1251 -t utf8 TPE1 (Lead performer(s)/Soloist(s)): Пример тега $ mid3v2 -l Sample.wav.mp3|grep TPE1 TPE1=?????? ???? $ export LANG=ru_RU.UTF-8 $ id3v2 -l Sample.wav.mp3|grep TPE1 TPE1 (Lead performer(s)/Soloist(s)): ������ ���� $ id3v2 -l Sample.wav.mp3|grep TPE1|iconv -f cp1251 -t utf8 TPE1 (Lead performer(s)/Soloist(s)): Пример тега $ mid3v2 -l Sample.wav.mp3|grep TPE1 TPE1=Ïðèìåð òåãà $ mid3v2 -l Sample.wav.mp3|grep TPE1|iconv -t latin1|iconv -f cp1251 TPE1=Пример тега $ mid3v2 --list-raw Sample.wav.mp3|grep TPE1 TPE1(encoding=0, text=[u'\xcf\xf0\xe8\xec\xe5\xf0 \xf2\xe5\xe3\xe0']) > Курение мана ясности не внесло. > Кто виноват, что делать, и где про это почитать? Виноваты lame и id3v2. Решение — использовать другие инструменты. Поскольку v2.4 пока не всеми понимается, mid3v2 может оказаться преждевременным решением. Лучше всего eyeD3, он позволяет выбирать между v2.3 и v2.4 и явно указывать кодировку (опытным путём установлено, что EasyTAG совместим с v2.3 и utf16-LE). -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org