Mac: What's ~/.CFUserTextEncoding for?

41

22

So I have this .CFUserTextEncoding file in my home dir. Google search results are less than ideal, filled with old ugly forum pages. Apple gives me an unrelated support article. ADC gives me an unrelated technote.

All I can gather thus far is that it's related to Core Foundation, and, well, some user text encoding. Anyway:

  • Why do I have it?
  • Can I not have it?
  • What's it for, what does it affect?
  • What format is it in?
  • Should I edit it manually?
  • Could I, regardlessly?

kch

Posted 2009-12-11T22:47:07.533

Reputation: 1 822

or should this be on stackoverflow because of core foundation? – kch – 2009-12-11T22:47:25.647

You might have better luck at SO, since it's related to CoreFoundation. – Lawrence Velázquez – 2009-12-12T00:10:48.927

Answers

42

~/.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.

Matthew Rankin

Posted 2009-12-11T22:47:07.533

Reputation: 4 340

Use echo -n "0x08000100:0x0" > ~/.CFUserTextEncoding to avoid adding an unintentional newliine. – MERM – 2016-01-26T17:04:30.530

Note that opening your Language & Region preferences panel may reset the file to the default encoding. – ShadSterling – 2019-02-05T18:03:21.420

3echo "0x08000100:0" > ~/.CFUserTextEncoding does the trick, but this is known to cause problems when saving files in Adobe Illustrator CS5. – Mathias Bynens – 2011-09-26T06:33:43.720

So. Does it sound like a good idea to change the encoding value to that of kCFStringEncodingUTF8? – kch – 2009-12-12T04:15:25.353

4Yay, cool. I changed the file to 0x08000100:0, and now triggering the Finder's Quick Look on UTF-8 text/plain files displays extended characters properly. – kch – 2009-12-12T04:19:10.930

4

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.

Jeremy L

Posted 2009-12-11T22:47:07.533

Reputation: 2 587

1Changing this file will have no impact on what language your Mac runs in. That's stored in the AppleLanguages array in your user's global domain preferences. – lensovet – 2014-08-30T17:30:55.867

Why do you state that the format is arbitrary? The format of a number, colon, number (e.g., 0:0) in the file corresponds to the user's default text encoding and the user's preferred language. Doesn't seem arbitrary to me. – Matthew Rankin – 2009-12-12T03:19:18.273

1A comma would suffice, as would a space, an apostrophe, etc. The numbers could have been the other way around. They were arbitrarily chosen. – Jeremy L – 2009-12-12T16:37:22.910

1Format != content. – Jeremy L – 2009-12-12T16:38:09.913