Mac: What's ~/.CFUserTextEncoding for?

~/.CFUserTextEncoding stores the default text encoding and preferred language for a user. Below is an excerpt from Technical Note 2228 of the Mac OS X Reference Library with some more information:

Core Foundation tries to access the user's home directory to determine their default text encoding (stored in the file ~/.CFUserTextEncoding). If you switch the EUID to the UID of the logging in user and then call CF, you may have problems when Core Foundation accesses this file. You can prevent this access by setting an environment variable that tells Core Foundation the default text encoding to use. The environment variable name is __CF_USER_TEXT_ENCODING. Its value should be constructed with the format string "0x%X:0:0", where %X is replaced by the UID of the logging in user.

By default, my copy of ~/.CFUserTextEncoding contained 0:0. The first number to the left of the colon represents the default encoding. The 0 in my file is for kCFStringEncodingMacRoman. A list of encodings and the associated number can be found in the CFString Reference

The value after the colon represents the user's preferred language. To change the preferred language go to Language & Text under System Preferences and move a new language the top of the list. To confirm what the file changed to, you can open Terminal and type cat ~/.CFUserTextEncoding, which yielded 0:3 when I changed my preferred language from English to Deutsch.


The file is simply two numbers separated by a colon; the second of which corresponds to the active language. Answering your questions:

Why do I have it? What's it for, what does it affect? Applications use it for pull in the environment when starting.

Can I not have it? It'll most likely be recreated.

What format is it in? Arbitrary.

Should I edit it manually? If you're ready for your Mac to be in a random language!

Could I, regardlessly? Of course.