Кодирование текста в тегах ID3v2.3

Благодаря этому и нескольким другим сайтам я создал простой код для чтения тегов ID3v2.3 из файлов MP3. . Это дало мне отличный опыт обучения, так как раньше я ничего не знал о шестнадцатеричном, байтовом, двоичном коде и т. д.

Я могу успешно читать данные, но столкнулся с проблемой, которая, как мне кажется, связана с используемой кодировкой. Я понял, что текстовые фреймы имеют байт в начале «текста», который описывает используемую кодировку, и, возможно, дополнительную информацию в следующих 2 байтах...

Пример: Данные из кадра TIT2 начинаются с байта $03 (шестнадцатеричный) перед фактическим текстом. Этот текст отображается правильно, хотя и с дополнительным символом в начале, с использованием Encoding.ASCII.GetString

В другом MP3 данные из TIT2 начинаются с $01, а за ними следует $FF $FE, что, как я полагаю, связано с Unicode? Однако сам текст разбит, между каждым текстовым символом есть $00, и это останавливает отображение данных в формах Windows (как только встречается 00, текст просто останавливается, поэтому я получаю первый символ и все ). Я пытался использовать Encoding.UNICODE.GetString, но это, похоже, возвращает тарабарщину.

Вывод этих данных на консоль, кажется, работает, с пробелами между символами, так что чтение данных работает правильно.

Я читал официальную документацию по ID3v2.3, но я думаю, что я просто недостаточно осведомлен, чтобы понять раздел кодирования текста.

Будем очень признательны за любые ответы или ссылки на статьи, которые могут быть полезны!

С уважением Ross

6
задан phanteh 25 March 2012 в 03:32
поделиться