Я не совсем уверен, имеет ли этот вопрос смысл.Я преобразовываю байтовый массив, взятый из тега ID3, и преобразую его в строку.Большинство текстовых фреймов в теге ID3 используют кодировку ISO 8859-1, но это зависит от фрейма.В любом случае, если вы посмотрите, что 0x00 в кодах ISO 8859-1, это недопустимо.
Для дальнейшего усложнения, либо из-за ошибки программиста, либо из-за плохого форматирования, некоторые строки заканчиваются на 0x00, а некоторые - нет.
При преобразовании серии байтов в строку с использованием кодировки ISO 8859-1 необходимо вручную проверять конец строки, чтобы определить, является ли она нулевой?Или объект кодирования с помощью любого метода, который он использует для преобразования в первую очередь, будет иметь дело с нулем должным образом?Кроме того, есть ли какая-то функция, которая может нормализовать или «исправить» строку с нулевым символом в конце?
Когда вы пытаетесь отобразить эти строки, они отображаются неправильно.
Я использую C # для этого конкретного проекта.Здесь есть дополнительная информация о тегах ID3: Спецификации ID3
Или я совершенно не понимаю всего этого?Является ли нулевой терминатор просто способом, которым конкретный язык обрабатывает строки, и он не имеет ничего общего с кодировкой?
- Редактировать: я использовал System.Text.Encoding.GetEncoding ("iso-8859-1")с последующим вызовом GetString