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


38

Тому я маю цей .CFUserTextEncodingфайл у своєму домашньому режисері. Результати пошуку Google є менш ніж ідеальними, наповненими старими потворними сторінками форуму. Apple надає мені незв'язану статтю підтримки. ADC дає мені споріднену технологію.

Все, що я можу зібрати поки що, це те, що це пов’язано з 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

Значення після двокрапки представляє бажану мову користувача. Щоб змінити бажану мову, перейдіть до "Мова та текст" у розділі Налаштування системи та перемістіть нову мову вгорі списку. Щоб підтвердити те, на що змінився файл, ви можете відкрити Terminal і ввести cat ~/.CFUserTextEncoding, що дало 0: 3, коли я змінив бажану мову з англійської на німецьку.


Так. Чи здається вам гарною ідеєю змінити значення кодування на значення kCFStringEncodingUTF8?
кч

4
Так, круто. Я змінив файл на 0x08000100: 0, і тепер запускаючи Швидкий погляд Finder на текстові / прості файли UTF-8, відображає розширені символи належним чином.
кч

2
echo "0x08000100:0" > ~/.CFUserTextEncodingробить фокус, але це, як відомо, створює проблеми при збереженні файлів в Adobe Illustrator CS5.
Mathias Bynens

Використовуйте, echo -n "0x08000100:0x0" > ~/.CFUserTextEncodingщоб уникнути ненавмисного newliine.
MERM

Зауважте, що відкриття панелі налаштувань мови та регіону може скинути файл до кодування за замовчуванням.
ShadSterling

4

Файл - це просто два числа, розділені двокрапкою; другий з яких відповідає активній мові. Відповідаючи на ваші запитання:

Чому я це маю? Для чого це, на що це впливає? Програми використовують його для витягування в навколишнє середовище при запуску.

Чи не можу я його мати? Це, швидше за все, буде відтворено.

У якому форматі він знаходиться? Довільна.

Чи слід його редагувати вручну? Якщо ви готові, щоб ваш Mac знаходився випадковою мовою!

Чи міг би я, незалежно? Звичайно.


Чому ви заявляєте, що формат довільний? Формат числа, двокрапки, числа (наприклад, 0: 0) у файлі відповідає кодуванню тексту тексту за замовчуванням та бажаній мові користувача. Мені це не здається довільним.
Метью Ранкін

1
Кома вистачила б, як і пробіл, апостроф тощо. Цифри могли бути навпаки. Їх довільно обирали.
Джеремі L

1
Формат! = Зміст.
Джеремі L

1
Зміна цього файлу не вплине на мову, на якому працює ваш Mac. Він зберігається в масиві AppleLanguages ​​у глобальних налаштуваннях домену вашого користувача.
лінзовіт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.