Mac: ¿Para qué sirve ~ / .CFUserTextEncoding?

38

Así que tengo este .CFUserTextEncodingarchivo en mi directorio de inicio. Los resultados de búsqueda de Google son menos que ideales, llenos de viejas páginas de foros feas. Apple me da un artículo de soporte no relacionado. ADC me da una nota técnica no relacionada.

Todo lo que puedo reunir hasta ahora es que está relacionado con Core Foundation y, bueno, con algo de codificación de texto de usuario. De todas formas:

  • ¿Por qué lo tengo?
  • ¿No puedo tenerlo?
  • ¿Para qué sirve, a qué afecta?
  • ¿En qué formato está?
  • ¿Debo editarlo manualmente?
  • ¿Podría yo, independientemente?
kch
fuente
¿O debería estar en stackoverflow debido a la base del núcleo?
kch
Es posible que tenga mejor suerte en SO, ya que está relacionado con CoreFoundation.
Lawrence Velázquez

Respuestas:

39

~/.CFUserTextEncodingalmacena la codificación de texto predeterminada y el idioma preferido para un usuario. A continuación se muestra un extracto de la Nota técnica 2228 de la Biblioteca de referencia de Mac OS X con más información:

Core Foundation intenta acceder al directorio de inicio del usuario para determinar su codificación de texto predeterminada (almacenada en el archivo ~ / .CFUserTextEncoding). Si cambia el EUID al UID del usuario que inicia sesión y luego llama a CF, puede tener problemas cuando Core Foundation acceda a este archivo. Puede evitar este acceso configurando una variable de entorno que le indique a Core Foundation la codificación de texto predeterminada que debe usar. El nombre de la variable de entorno es __CF_USER_TEXT_ENCODING. Su valor debe construirse con la cadena de formato "0x% X: 0: 0", donde% X se reemplaza por el UID del usuario que inicia sesión.

Por defecto, mi copia de ~/.CFUserTextEncodingcontenido 0: 0. El primer número a la izquierda de los dos puntos representa la codificación predeterminada. El 0 en mi archivo es para kCFStringEncodingMacRoman. Se puede encontrar una lista de codificaciones y el número asociado en la Referencia de CFString

El valor después de los dos puntos representa el idioma preferido del usuario. Para cambiar el idioma preferido, vaya a Idioma y texto en Preferencias del sistema y mueva un nuevo idioma al principio de la lista. Para confirmar a qué cambió el archivo, puede abrir Terminal y escribir cat ~/.CFUserTextEncoding, que produjo 0: 3 cuando cambié mi idioma preferido de inglés a alemán.

Matthew Rankin
fuente
Asi que. ¿Parece una buena idea cambiar el valor de codificación al de kCFStringEncodingUTF8?
kch
44
Yay, genial Cambié el archivo a 0x08000100: 0, y ahora activando la Búsqueda rápida del Finder en archivos de texto / sin formato UTF-8 muestra caracteres extendidos correctamente.
kch
2
echo "0x08000100:0" > ~/.CFUserTextEncodinghace el truco, pero se sabe que esto causa problemas al guardar archivos en Adobe Illustrator CS5.
Mathias Bynens
Use echo -n "0x08000100:0x0" > ~/.CFUserTextEncodingpara evitar agregar una nueva línea involuntaria.
MERM
Tenga en cuenta que al abrir el panel de preferencias de Idioma y región puede restablecer el archivo a la codificación predeterminada.
ShadSterling
4

El archivo es simplemente dos números separados por dos puntos; el segundo de los cuales corresponde al lenguaje activo. Contestando tus preguntas:

¿Por qué lo tengo? ¿Para qué sirve, a qué afecta? Las aplicaciones lo usan para atraer el entorno cuando se inicia.

¿No puedo tenerlo? Lo más probable es que se vuelva a crear.

¿En qué formato está? Arbitrario.

¿Debo editarlo manualmente? ¡Si estás listo para que tu Mac esté en un idioma aleatorio!

¿Podría yo, independientemente? Por supuesto.

Jeremy L
fuente
¿Por qué declaras que el formato es arbitrario? El formato de un número, dos puntos, número (por ejemplo, 0: 0) en el archivo corresponde a la codificación de texto predeterminada del usuario y al idioma preferido del usuario. No me parece arbitrario.
Matthew Rankin
1
Una coma sería suficiente, al igual que un espacio, un apóstrofe, etc. Los números podrían haber sido al revés. Fueron elegidos arbitrariamente.
Jeremy L
1
Formato! = Contenido.
Jeremy L
1
Cambiar este archivo no tendrá ningún impacto en el idioma en que se ejecuta su Mac. Eso se almacena en la matriz AppleLanguages ​​en las preferencias de dominio global de su usuario.
lensovet