Как я определяю кодирование файла в OS X?

Я пытаюсь ввести некоторые символы UTF-8 в ЛАТЕКСНЫЙ файл в TextMate (который говорит, что его кодировка по умолчанию является UTF-8), но ЛАТЕКС, кажется, не понимает их.

Выполнение cat my_file.tex показывает символы правильно в Терминале. Выполнение ls -al шоу что-то я никогда не видел прежде: списком файлов:

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

(И, да, я использую \usepackage[utf8]{inputenc} в ЛАТЕКСЕ.)

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

164
задан Peter Mortensen 29 July 2019 в 13:14
поделиться

6 ответов

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

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

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

33
ответ дан Community 23 November 2019 в 21:10
поделиться

Способ "в лоб" проверить кодирование мог бы просто состоять в том, чтобы проверить файл в Hex-редактор или подобный. (или запишите программу для проверки), Взгляд на двоичные данные в файле. Формат UTF-8 довольно легко распознать. Все символы ASCII являются единственными байтами со значениями ниже 128 (0x80) Многобайтовых последовательностей, следуют за шаблоном, показанным в статья

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

0
ответ дан jalf 23 November 2019 в 21:10
поделиться

Какой ЛАТЕКС Вы используете? Когда я использовал teTeX, я должен был вручную загрузить пакет unicode и добавить это к своим .tex файлам:

% UTF-8 stuff
\usepackage[notipa]{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}

Теперь, я переключился на XeTeX от пакета TeXlive 2008 ( здесь ), это еще более просто:

% UTF-8 stuff
\usepackage{fontspec}
\usepackage{xunicode}

Что касается обнаружения кодирования файла, Вы могли играть с file(1) (но оно скорее ограничено), но как кто-то еще сказал, это трудно.

0
ответ дан Keltia 23 November 2019 в 21:10
поделиться

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

3
ответ дан Jouni K. Seppänen 23 November 2019 в 21:10
поделиться

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

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

2
ответ дан dreamlax 23 November 2019 в 21:10
поделиться

Классический 8-разрядный ЛАТЕКС очень ограничивается, в которых символах UTF8 он может использовать; это очень зависит от кодирования шрифта, который Вы используете и какие глифы, которые имеет в наличии шрифт.

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

Вот минимальный пример, показывающий, как несколько символов UTF8 могут использоваться в ЛАТЕКСНОМ документе:

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

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

4
ответ дан Will Robertson 23 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: