2012-02-06 2 views
1

я побежал следующую команду в хранилище программного обеспечения у меня есть доступ к:Что означает ISO-8859 в `файле`?

находке. -not -name ".svn" -type f -exec file "{}" \;

и видел много выходных линий, как

./File.java: Программа ISO-8859 C++ текст

Что это значит? ISO-8859 представляет собой кодировку класс, а не определенную кодировку. Я ожидал, что все файлы будут UTF-8, но большинство из них представлено в представленной кодировке. Является ли ISO-8859 правильным подмножеством UTF-8?

Возможно ли для меня безопасное преобразование всех этих файлов с использованием ISO-8859-1 в качестве исходной кодировки при переводе его в UTF-8 с помощью iconv?

+0

_Edit_: При компиляции источников Java я получаю предупреждения, указывающие, что для немецких умляутов нет соответствующего сопоставления. – KoenigGunther

+0

@KoeingGunther Вы должны скомпилировать свою Java-программу с правильной кодировкой, например, 'java -encoding UTF-8' или' java -encoding MacRoman' или 'java -encoding ISO-8859-15' или тем, что вы используете. У Java есть дефект дизайна, при котором нет никакого внутреннего кода, чтобы указать кодировку. Да, это означает, что вы можете делать злые вещи, такие как «java -encoding UTF-16LE» или еще что-то; возможно, они истолковывают это как функцию, хотя я этого не делаю. – tchrist

ответ

1

Вопрос в другом, но я думаю, что ответ, что вы ищете:

Linux & C-Programming: How can I write utf-8 encoded text to a file?

+0

Ummm, ответ решает часть моей проблемы, да, но более волнующий вопрос заключается в том, могу ли я безопасно обрабатывать кодировки ISO-8859, как ISO-8859-1 или ISO-8859-15, и почему 'iconv' не выбирает одно из конкретных кодировок. – KoenigGunther

+0

Если это ваши собственные исходные файлы, то да, маловероятно, чтобы они содержали чешский или арабский язык, вам не кажется? – tripleee

1

Я боюсь, что программа Unix file довольно плохо в этом. Это просто означает, что он находится в байтовой кодировке. Это не означает, что это ISO-8859-1. Это может быть даже в байтах, отличных от ISO, хотя обычно это видно.

У меня есть система, которая работает намного лучше, чем файл, но она обучается на английском языке, поэтому может не так хорошо, как на немецком языке.

Короткий ответ, что результат file является надежным. Вы должны знать настоящую кодировку, чтобы ее преобразовать.

0

Обнаружение набора символов, используемое file, является довольно упрощенным. Он распознает UTF-8. И он различал «ISO-8859» и «non-ISO extended-ASCII», ища байты в диапазоне 0x80-0x9F, где кодировки ISO 8859 имеют «дыры». Но он не пытается определить , который используется в кодировке ISO 8859. Вот почему он просто говорит ISO-8859 вместо ISO-8859-1 или ISO-8859-15.

Смежные вопросы