Я пытаюсь прочитать метаданные из музыкального файла (m4a). Я успешно выяснил, как перемещаться по файлу, чтобы добраться до метаданных. Трудно найти документацию по формату файла, но я обнаружил, что кодировка метаданных - UTF-8.
Вот моя проблема, с которой я вырывал свои волосы. Я использую Visual Basic 2008 для доступа и чтения данных из файла. Я получаю доступ к файлу, используя методы BinaryStreamReader. Но не могу найти настройки кодирования, которая будет обрабатывать метаданные тегов И сами метаданные. Ниже приведена шестнадцатеричная строка образца данных, с которыми я работаю.
00 00 00 21 A9 6E 61 6D 00 00 00 19 64 61 74 61 00 00 00 01 00 00 00 47 6C C3 B3 73 C3 B3 6C 69
Последние 9 байтов являются названием трека под названием Glósóli - так что определенно UTF-8. Если я установлю кодировку на UTF-8, я могу получить и отобразить это значение правильно. Однако 4-символьное имя мета-тега A9 6E 61 6D извлекается как «квадратная ячейка» nam вместо © nam. Если я изменяю кодировку на Windows-1252, я получаю © nam правильно, но название трека - бред!
Не могли бы вы объяснить, почему кодировка UTF-8 неправильно распознает байт 0xA9?
Я также заметил, что просмотр одинаковых двухсимвольных строк для © nam и Glósóli в Notepad ++ дает аналогичные результаты. Если для параметра Формат задано значение Кодировать в UTF-8, символ © не отображается. Если для параметра Формат задано значение ANSII, это так, но название дорожки неверно. Я не могу найти настройки, которые отображают желаемый результат. Я уверен, что ответ очевиден, но я его не вижу.
Буду признателен за любую помощь или объяснение
Я использую Windows XP со всеми последними патчами
Mike