Лечение кракозябров в названиях музыкальных коллекций mp3

У нас с Юлей общая коллекция музыки в mp3, которую мы собирали, наверное, лет пятнадцать - наверное, столько времени, сколько существует сам формат MP3. Когда мы стали жить вместе, две фонотеки были объединены в одну, сложены для удобства доступа в папочку на сервере, и эта папочка сейчас занимает, наверное, гигабайт под двести.

Проблемы с кодировкой у нас начались практически одновременно, причем у каждого по-своему. Юля переехала на мак и стала слушать музыку через iTunes, а я сгрузил часть музыки к себе на телефон. И там, и там обнаружилась одна и та же проблема: русские названия отображались в виде кракозябров.

кракозябры в музыке на Nokia E72 кракозябры в музыкальной коллекции iTunes

Ничего удивительного в этом, в общем-то, нет. Мы всю жизнь слушали музыку через Winamp, который по умолчанию считает, что названия в ID3-тегах написаны в виндовой кодировке cp1251 (и чаще всего оказывается прав). Но со временем появляется все больше программ и устройств, которые предполагают, что все названия написаны в Unicode или utf8, и ни про какие cp1251 , а также cp866 и koi8-r не знают. Да и, откровенно говоря, правильно делают - нечего поддерживать этот зоопарк морально устаревших и несовместимых друг с другом кодировок.

Соответственно, возник вопрос, как быстро и безболезненно перекодировать все ID3-теги в юникод. Самое лучшее решение, которое мне удалось найти - это скрипт под названием id3iconv. Он не задает лишних вопросов, кроме самых очевидных:

- название папочки, где лежат mp3;
- название исходной кодировки.

Запуск - проще не бывает. К архиву прилагается cmd-шник, который умеет искать по вложенным подпапкам, а также самостоятельно задает исходную кодировку в cp1251. Поэтому для запуска мне достаточно было бы открыть виндовую консоль и написать:

id3iconv.cmd S:\Audio

После чего скрипт начнет планомерно обшаривать заданную папку и ее подпапки на предмет mp3-файлов, которые будут перекодированы из cp1251 в Unicode. Если скрипт встретит файлы, которые уже в правильной кодировке - он их просто пропустит, так что опасности испортить то, что уже и так работает, нет.

Все бы хорошо, но в моем случае это не очень удачное решение, поскольку S: - это удаленный сетевой диск. На прогон туда-сюда двухсот гигабайт по беспроводной сетке ушла бы неделя. Но чем еще хорош id3iconfv - так это тем, что он написан на Java, благодаря чему его можно запускать в любой среде. Поэтому я запустил скрипт прямо на сервере. Там синтаксис был чуть посложнее, но все равно это одна строчка:

find /mnt/shared/Audio -iname '*.mp3' -print0 | xargs -0 java -jar id3iconv-0.2.1.jar -e cp1251

Оставил все это крутиться на ночь, и утром вся фонотека была уже в Юникоде.

Комментарии

Изображение ksch

Здорово, интересно, спасибо :)
Хотя у меня сейчас русской музыки почти нет

Изображение myx

А расскажи, что из русского осталось? У меня ее тоже сравнительно немного, но все же есть (как нетрудно догадаться по скриншотам) :)

Изображение ksch

На плеере только Ария %)
Я слушаю сейчас в основном Рамштайн большую часть времени