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

Ответить