Mac: для чего ~ / .CFUserTextEncoding?

38

Так что у меня есть этот .CFUserTextEncodingфайл в моем домашнем каталоге. Результаты поиска Google далеко не идеальны, заполнены старыми уродливыми страницами форума. Apple дает мне не связанную статью поддержки. АЦП дает мне не связанный технот.

Все, что я могу пока собрать, это то, что это связано с Core Foundation, и, ну, в некоторой степени, с пользовательским кодированием текста. Так или иначе:

  • Почему у меня это есть?
  • Могу ли я не иметь это?
  • Для чего это нужно, на что это влияет?
  • В каком формате это?
  • Должен ли я редактировать это вручную?
  • Могу ли я, независимо?
KCH
источник
или это должно быть на стеке потока из-за основной основы?
КК
Возможно, вам повезет больше в SO, поскольку он связан с CoreFoundation.
Лоуренс Веласкес

Ответы:

39

~/.CFUserTextEncodingхранит кодировку текста по умолчанию и предпочтительный язык для пользователя. Ниже приведен отрывок из Технической ноты 2228 Справочной библиотеки Mac OS X с дополнительной информацией:

Core Foundation пытается получить доступ к домашнему каталогу пользователя, чтобы определить его кодировку текста по умолчанию (хранится в файле ~ / .CFUserTextEncoding). Если вы переключите EUID на UID входящего в систему пользователя, а затем вызовете CF, у вас могут возникнуть проблемы, когда Core Foundation получит доступ к этому файлу. Вы можете предотвратить этот доступ, установив переменную среды, которая сообщает Core Foundation кодировку текста по умолчанию для использования. Имя переменной среды: __CF_USER_TEXT_ENCODING. Его значение должно быть составлено с помощью строки формата «0x% X: 0: 0», где% X заменяется UID пользователя, вошедшего в систему.

По умолчанию моя копия ~/.CFUserTextEncodingсодержала 0: 0. Первое число слева от двоеточия представляет кодировку по умолчанию. 0 в моем файле для kCFStringEncodingMacRoman. Список кодировок и связанный номер можно найти в справочнике CFString.

Значение после двоеточия представляет предпочтительный язык пользователя. Чтобы изменить предпочитаемый язык, перейдите в раздел «Язык и текст» в «Системных настройках» и переместите новый язык в начало списка. Чтобы подтвердить, что файл изменился, вы можете открыть Терминал и набрать cat ~/.CFUserTextEncoding, что привело к 0: 3, когда я сменил предпочитаемый язык с английского на немецкий.

Мэтью Ранкин
источник
Так. Это звучит как хорошая идея изменить значение кодирования на kCFStringEncodingUTF8?
KCH
4
Ууу круто Я изменил файл на 0x08000100: 0, и теперь при запуске быстрого просмотра Finder в текстовых / простых файлах UTF-8 отображаются расширенные символы.
KCH
2
echo "0x08000100:0" > ~/.CFUserTextEncodingделает свое дело, но это, как известно, вызывает проблемы при сохранении файлов в Adobe Illustrator CS5.
Матиас Биненс
Используйте, echo -n "0x08000100:0x0" > ~/.CFUserTextEncodingчтобы избежать непреднамеренного добавления нового.
MERM
Обратите внимание, что открытие панели настроек «Язык и регион» может привести к сбросу файла в кодировку по умолчанию.
ShadSterling
4

Файл представляет собой просто два числа, разделенных двоеточием; второй из которых соответствует активному языку. Отвечая на ваши вопросы:

Почему у меня это есть? Для чего это нужно, на что это влияет? Приложения используют его для запуска в среде при запуске.

Могу ли я не иметь это? Скорее всего, это будет воссоздано.

В каком формате это? Произвольное.

Должен ли я редактировать это вручную? Если вы готовы, чтобы ваш Mac был на случайном языке!

Могу ли я, независимо? Конечно.

Джереми Л
источник
Почему вы заявляете, что формат является произвольным? Формат числа, двоеточия, числа (например, 0: 0) в файле соответствует кодировке текста пользователя по умолчанию и предпочтительному языку пользователя. Не кажется мне произвольным.
Мэтью Ранкин
1
Запятой было бы достаточно, как и пробел, апостроф и т. Д. Числа могли быть другими. Они были произвольно выбраны.
Джереми Л
1
Формат! = Содержание.
Джереми Л
1
Изменение этого файла не повлияет на язык вашего Mac. Он хранится в массиве AppleLanguages ​​в глобальных настройках домена вашего пользователя.
Ленсовет