Mac: Qu'est-ce que ~ / .CFUserTextEncoding?

38

J'ai donc ce .CFUserTextEncodingfichier dans mon répertoire personnel. Les résultats de recherche Google sont loin d'être idéaux, remplis d'anciennes pages de forum laides. Apple me donne un article de support indépendant. ADC me donne une note technique indépendante.

Tout ce que je peux comprendre jusqu’à présent, c’est que cela est lié à Core Foundation, ainsi qu’à un certain encodage de texte utilisateur. En tous cas:

  • Pourquoi est-ce que je l'ai?
  • Puis-je pas l'avoir?
  • A quoi sert-il, qu'est-ce que ça affecte?
  • Dans quel format est-il?
  • Dois-je le modifier manuellement?
  • Puis-je quand même?
kch
la source
ou cela devrait-il être sur stackoverflow à cause de la base?
Kch
Vous aurez peut-être plus de chance à SO, car cela est lié à CoreFoundation.
Lawrence Velázquez

Réponses:

39

~/.CFUserTextEncodingstocke le codage de texte par défaut et la langue préférée d'un utilisateur. Vous trouverez ci-dessous un extrait de la note technique 2228 de la bibliothèque de référence Mac OS X contenant des informations supplémentaires:

Core Foundation tente d'accéder au répertoire de base de l'utilisateur pour déterminer son codage de texte par défaut (stocké dans le fichier ~ / .CFUserTextEncoding). Si vous passez de EUID à l'UID de l'utilisateur qui se connecte puis appelez CF, des problèmes peuvent survenir lorsque Core Foundation accède à ce fichier. Vous pouvez empêcher cet accès en définissant une variable d'environnement qui indique à Core Foundation le codage de texte par défaut à utiliser. Le nom de la variable d'environnement est __CF_USER_TEXT_ENCODING. Sa valeur doit être construite avec le format de chaîne "0x% X: 0: 0", où% X est remplacé par l'UID de l'utilisateur qui se connecte.

Par défaut, ma copie ~/.CFUserTextEncodingcontenait 0: 0. Le premier chiffre à gauche des deux points représente le codage par défaut. Le 0 dans mon fichier est pour kCFStringEncodingMacRoman. Vous trouverez une liste des codages et le numéro associé dans le manuel CFString Reference.

La valeur après les deux points représente la langue préférée de l'utilisateur. Pour changer la langue préférée, allez à Langue et texte sous Préférences Système et déplacez une nouvelle langue en haut de la liste. Pour confirmer ce que le fichier a changé, vous pouvez ouvrir Terminal et taper cat ~/.CFUserTextEncoding, ce qui a donné 0: 3 lorsque j'ai changé ma langue préférée d'anglais en allemand.

Matthew Rankin
la source
Alors. Est-ce une bonne idée de changer la valeur d'encodage en celle de kCFStringEncodingUTF8?
kch
4
Yay, cool. J'ai changé le fichier en 0x08000100: 0, et maintenant le déclenchement de la recherche rapide du Finder sur les fichiers texte / brut UTF-8 affiche correctement les caractères étendus.
kch
2
echo "0x08000100:0" > ~/.CFUserTextEncodingfait l'affaire, mais cela est connu pour causer des problèmes lors de l'enregistrement de fichiers dans Adobe Illustrator CS5.
Mathias Bynens
Utilisez echo -n "0x08000100:0x0" > ~/.CFUserTextEncodingpour éviter d'ajouter une nouvelle ligne involontaire.
MERM
Notez que l'ouverture de votre panneau de préférences Langue et région peut réinitialiser le fichier au codage par défaut.
ShadSterling
4

Le fichier est simplement deux nombres séparés par deux points; la seconde correspond à la langue active. Répondre à vos questions:

Pourquoi est-ce que je l'ai? A quoi sert-il, qu'est-ce que ça affecte? Les applications l'utilisent pour attirer l'environnement lors du démarrage.

Puis-je pas l'avoir? Ce sera probablement recréé.

Dans quel format est-il? Arbitraire.

Dois-je le modifier manuellement? Si vous êtes prêt pour que votre Mac soit dans une langue aléatoire!

Puis-je quand même? Bien sûr.

Jeremy L
la source
Pourquoi dites-vous que le format est arbitraire? Le format d'un nombre, deux points, nombre (par exemple, 0: 0) dans le fichier correspond au codage de texte par défaut de l'utilisateur et à la langue préférée de l'utilisateur. Cela ne me semble pas arbitraire.
Matthew Rankin
1
Une virgule suffirait, ainsi qu'un espace, une apostrophe, etc. Les chiffres auraient pu être l'inverse. Ils ont été choisis arbitrairement.
Jeremy L
1
Format! = Contenu.
Jeremy L
1
La modification de ce fichier n'aura aucun impact sur la langue dans laquelle votre Mac s'exécute. Elle est stockée dans le tableau AppleLanguages ​​dans les préférences de domaine globales de votre utilisateur.
lensovet