Как определить кодировку файла в OSX? - PullRequest
161 голосов
/ 12 февраля 2009

Я пытаюсь ввести некоторые символы UTF-8 в файл LaTeX в TextMate (который говорит, что его кодировка по умолчанию - UTF-8), но LaTeX, кажется, не понимает их. Запуск cat my_file.tex показывает символы правильно в Терминале. Запуск ls -al показывает что-то, чего я никогда раньше не видел: «@» в списке файлов:

-rw-r--r--@  1 me      users      2021 Feb 11 18:05 my_file.tex

(И да, я использую \usepackage[utf8]{inputenc} в LaTeX.)

Я нашел iconv, но это, кажется, не в состоянии сказать мне, что такое кодировка - он будет преобразован только после того, как я выясню это.

Ответы [ 15 ]

418 голосов
/ 17 марта 2010

Использование опции -I (это заглавная i) в команде file, похоже, показывает кодировку файла.

file -I {filename}
55 голосов
/ 25 февраля 2011

В Mac OS X команда file -I (заглавная i) даст вам правильный набор символов, если тестируемый файл содержит символы вне основного диапазона ASCII.

Например, если вы заходите в Терминал и используете vi для создания файла, например. vi test.txt затем вставьте несколько символов и вставьте символ с акцентом (попробуйте ALT-e, а затем e) затем сохраните файл.

Они набирают file -I text.txt, и вы должны получить такой результат:

test.txt: text/plain; charset=utf-8

33 голосов
/ 12 февраля 2009

@ означает, что файл имеет расширенные атрибуты файла, связанные с ним. Вы можете запросить их, используя функцию getxattr().

Нет определенного способа определить кодировку файла. Прочитайте этот ответ, это объясняет, почему.

Существует инструмент командной строки, enca , который пытается угадать кодировку. Возможно, вы захотите проверить это.

20 голосов
/ 27 мая 2011

Вы также можете конвертировать из одного типа файла в другой, используя следующую команду:

iconv -f original_charset -t new_charset originalfile > newfile

например.

iconv -f utf-16le -t utf-8 file1.txt > file2.txt
19 голосов
/ 11 ноября 2015
vim -c 'execute "silent !echo " . &fileencoding | q' {filename}

с псевдонимом где-то в моей конфигурации bash как

alias vic="vim -c 'execute \"silent !echo \" . &fileencoding | q'"

поэтому я просто набираю

vic {filename}

На моем ванильном OSX Yosemite он дает более точные результаты, чем "file -I":

$ file -I pdfs/udocument0.pdf
pdfs/udocument0.pdf: application/pdf; charset=binary
$ vic pdfs/udocument0.pdf
latin1
$
$ file -I pdfs/t0.pdf
pdfs/t0.pdf: application/pdf; charset=us-ascii
$ vic pdfs/t0.pdf
utf-8
13 голосов
/ 04 ноября 2010

Просто используйте:

file -I <filename>

Вот и все.

8 голосов
/ 04 февраля 2015

Использование команды file с параметром --mime-encoding (например, file --mime-encoding some_file.txt) вместо параметра -I работает в OS X и дает дополнительное преимущество, исключая тип mime, "text / plain", который вы, вероятно, используете не волнует.

4 голосов
/ 12 февраля 2009

Классический 8-битный LaTeX очень ограничен, в котором могут использоваться символы UTF8; он сильно зависит от кодировки шрифта, который вы используете, и от того, какие глифы у этого шрифта есть в наличии.

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

Вот минимальный пример, показывающий, как несколько символов UTF8 могут использоваться в документе LaTeX:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\begin{document}
‘Héllø—thêrè.’
\end{document}

Возможно, вам больше повезет с кодировкой [utf8x], но при этом вас немного предупредят, что она больше не поддерживается и имеет некоторые особенности по сравнению с [utf8] (насколько я помню; давно я смотрел на Это). Но если это поможет, это все, что важно для вас.

3 голосов
/ 12 февраля 2009

Знак @ означает, что файл имеет расширенные атрибуты . xattr file показывает, какие атрибуты он имеет, xattr -l file также показывает значения атрибутов (которые иногда могут быть большими - попробуйте, например, xattr /System/Library/Fonts/HelveLTMM, чтобы увидеть шрифт старого стиля, который существует в ветке ресурсов).

2 голосов
/ 08 марта 2009

Ввод file myfile.tex в терминале может иногда сообщать вам кодировку и тип файла, используя серию алгоритмов и магических чисел. Это довольно полезно, но не полагайтесь на него, предоставляя конкретную или достоверную информацию.

Файл Localizable.strings (найденный в локализованных приложениях Mac OS X) обычно считается исходным файлом UTF-16 C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...