Mac:〜/ .CFUserTextEncoding的用途是什么?


38

所以.CFUserTextEncoding我的主目录中有这个文件。Google搜索结果不理想,到处都是丑陋的旧版论坛页面。苹果给我提供了无关的支持文章。ADC给我一个无关的技术说明。

到目前为止,我所能收集到的是它与Core Foundation有关,并且还与一些用户文本编码有关。无论如何:

  • 我为什么有它?
  • 我可以不用吗?
  • 它是做什么用的,会产生什么影响?
  • 它是什么格式?
  • 我应该手动编辑吗?
  • 我可以吗?

还是应该由于核心基础而出现在stackoverflow上?
kch

您可能会对SO感到更好,因为它与CoreFoundation有关。
劳伦斯·贝拉斯克斯

Answers:


39

~/.CFUserTextEncoding存储用户的默认文本编码和首选语言。以下摘录自Mac OS X参考库的技术说明2228,其中包含更多信息:

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,当我将首选语言从英语更改为Deutsch时,生成的比例为0:3。


所以。将编码值更改为kCFStringEncodingUTF8听起来不错吗?
kch

4
是的,很酷。我将文件更改为0x08000100:0,现在在UTF-8文本/纯文本文件上触发Finder的快速查找可以正确显示扩展字符。
kch

2
echo "0x08000100:0" > ~/.CFUserTextEncoding可以解决问题,但是在Adobe Illustrator CS5中保存文件时会导致问题。
Mathias Bynens 2011年

使用echo -n "0x08000100:0x0" > ~/.CFUserTextEncoding以避免增加无意newliine。
MERM

请注意,打开“语言和地区”偏好设置面板可能会将文件重置为默认编码。
ShadSterling

4

该文件只是两个数字,中间用冒号分隔;第二个对应于活动语言。回答您的问题:

我为什么有它?它是做什么用的,会产生什么影响?应用程序在启动时将其用于拉入环境。

我可以不用吗?它很可能会被重新创建。

它是什么格式?随便

我应该手动编辑吗?如果您准备好让Mac使用随机语言!

我可以吗?当然。


您为什么声明格式是任意的?文件中数字,冒号,数字(例如0:0)的格式对应于用户的默认文本编码和用户的首选语言。对我来说似乎并不武断。
马修·兰金(

1
逗号,空格,撇号等就足够了。数字可能恰恰相反。他们是任意选择的。
杰里米L 2009年

1
格式化!=内容。
杰里米L 2009年

1
更改此文件不会影响Mac使用的语言。该文件存储在用户的全局域首选项中的AppleLanguages数组中。
lensovet
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.