Кодировка текста в тегах 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, но, думаю, я недостаточно разбирался, чтобы понять раздел кодирования текста.

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

С уважением Росс

Ответы на вопрос(3)

Ваш ответ на вопрос