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