Что означает ISO-8859 в `file`? - PullRequest
1 голос
/ 06 февраля 2012

Я выполнил следующую команду в хранилище программного обеспечения, к которому у меня есть доступ:

find.-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 например?

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

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

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

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

1 голос
/ 06 февраля 2012

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

Программирование на Linux и C: как записать кодированный в utf-8 текст в файл?

0 голосов
/ 28 февраля 2012

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

...