кодирование сценария оболочки файла

Haskell:

factorial n = product [1..n]
33
задан Paused until further notice. 13 November 2009 в 18:18
поделиться

3 ответа

Я бы просто использовал

file -bi myfile.txt

, чтобы определить кодировку символов конкретного файла.

Решение с внешней зависимостью, но я подозреваю, что файл очень распространено в настоящее время среди всех полусовременных дистрибутивов.

РЕДАКТИРОВАТЬ:

В ответ на комментарий Лоуренса Гонсалвеса: b - вариант быть «кратким» (без указания имени файла) и i является сокращенным эквивалентом - mime , поэтому наиболее переносимым способом (включая Mac OSX), вероятно, будет:

file --mime myfile.txt 
58
ответ дан 27 November 2019 в 17:51
поделиться

Невозможно быть на 100% уверенным (если только вы не имеете дело с форматом файла, который внутренне определяет его кодировку).

Большинство инструментов, которые пытаются сделать это различие, будут пытаться декодировать файл как utf-8 (так как это более строгая кодировка), и если это не удается, вернуться к iso-8859-1. Вы можете сделать это с помощью iconv «вручную» или использовать файл :

$ file utf8.txt
utf8.txt: UTF-8 Unicode text
$ file latin1.txt
latin1.txt: ISO-8859 text

Обратите внимание, что файлы ASCII совместимы как с UTF-8, так и с ISO-8859-1.

$ file ascii.txt
ascii.txt: ASCII text

Наконец: нет реального способа отличить ISO-8859-1 от ISO-8859-2, например, если вы не собираетесь считать, что это естественный язык и использовать статистические методы. Вероятно, поэтому в файле написано «ISO-8859».

9
ответ дан 27 November 2019 в 17:51
поделиться

вы можете использовать команду file файл --mime myfile.text

8
ответ дан 27 November 2019 в 17:51
поделиться