Какая кодировка на mac os

Обновлено: 28.06.2024

Я пытаюсь ввести некоторые символы UTF-8 в файл LaTeX в TextMate (который говорит, что его кодировка по умолчанию-UTF-8), но LaTeX, похоже, не понимает их. Бег!--1--> показывает символы правильно в терминале. Бег!--2--> показывает то, что я никогда не видел раньше: "@ " в файл выглядит так:

(и, да, я использую usepackage[utf8] в латекс.)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Synalyze Его! позволяет сравнивать текст или байты во всех кодировках в библиотека ICU предложения. Используя эту функцию, вы обычно сразу видите, какая кодовая страница имеет смысл для ваших данных.

вы можете попробовать загрузить файл в окно firefox, а затем перейти к кодировке View-Character. Рядом с типом кодировки файла должен быть флажок.

какой латекс вы используете? Когда я использовал teTeX, мне пришлось вручную загрузить unicode пакет и добавьте это в мой .файлы Tex:

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

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

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

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

я реализовал сценарий bash ниже, он работает для меня.

он сначала пытается iconv из кодировки, возвращенной file --mime-encoding to utf-8 .

если это не удается, он проходит через все кодировки и показывает разницу между оригиналом и перекодируется файл. Он пропускает кодировки, которые производят большой выход diff ("большой", как определено MAX_DIFF_LINES переменной или второй входной аргумент), так как это скорее всего неправильная кодировка.

если "плохие вещи" произойти в результате использования этого скрипта, не вини меня. Есть rm -f там, так что есть монстры. Я пытался предотвратить неблагоприятные последствия, используя его для файлов со случайным суффиксом, но я не даю никаких обещаний.

Случилось мне иметь ноут на OS X, комп на Linux и одного из друзей с Windows. И вот через dropbox обмениваются все эти три компа документами разными. В том числе и текстовыми, в которых хранятся разные заметки, задачи и т.п. И вот незадача: тексты написанные на MacOSx плохо читаются в блокноте Винды, а виндовые в textedit на MacOSx.

И вся причина в том, что на винде блокнот использует кодировку Windows 1251, а на OS X используется по умолчанию MACCYRILLIC. Причем обе программы без проблем работают с UTF-8 кодировкой.
Вот только конвертировать из одной кодировки в другую как-то неудобно, лишнее время тратить на открытие терминала и набор заветных команд iconv…

Пораздумав, написал небольшой скрипт, который сам определяет используемую кодировку и конвертирует в UTF-8 все txt-файлы.

Что использую для всего:
Python 2.7
Mac OS X 10.7.5
PyCharm IDE

Изначально сделал определение кодировки самостоятельно, без дополнительных модулей. Но по совету ad3w решил переписать с использованием готового модуля chardet для определения кодировки.
Кому интересно, предыдущий

Определение происходит простым перебором кодировок и выбором той, в которой не будет лишних символов. А набор символов определяете Вы. Конечно этот способ не подойдет для файлов с DOS-графикой, но в обычных целях использования txt его вполне хватит.

Скачиваем модуль chardet 1.1,
Распаковываем и устанавливаем:


Создаем свой скрипт для перекодировки файлов:

Далее необходимо сделать удобным запуск данного скрипта прямо из папки в OS X.

Открываем Automator и создаем Службу.
Вверху выбираем пункты, чтобы получилось «Служба получает файлы и папки в Finder.app».

Далее ставим действие «получить выбранные объекты Finder».
Далее «Запустить Shell-скрипт» в настройках его «Передать ввод: как аргументы» и в нем содержание:

Дописал 2>/dev/null, чтобы автоматор не останавливал выполнение при выводе ошибки модуля chardet.


И последний пункт «Show Growl Notification» (в нем можно написать, что конвертация произведена).

Сохраняем с именем латинскими буквами (с русскими у меня почему-то пункт в меню не появлялся, пока не переименовал) и проверяем.

Новый пункт меню появится в Finder в меню файлов и папок в подменю Сервисы.

Читайте также: