Mac: Para que serve o ~ / .CFUserTextEncoding?

38

Então, eu tenho esse .CFUserTextEncodingarquivo no meu diretório home. Os resultados de pesquisa do Google são inferiores ao ideal, repletos de antigas e feias páginas do fórum. A Apple me fornece um artigo de suporte não relacionado. A ADC me fornece uma nota técnica não relacionada.

Tudo o que posso reunir até agora é que está relacionado ao Core Foundation e, bem, a alguma codificação de texto do usuário. De qualquer forma:

  • Por que eu tenho isso?
  • Eu não posso tê-lo?
  • Para que serve, o que isso afeta?
  • Em que formato está?
  • Devo editá-lo manualmente?
  • Eu poderia, independentemente?
kch
fonte
ou isso deve estar no stackoverflow por causa da base do núcleo?
kch
Você pode ter mais sorte no SO, pois está relacionado ao CoreFoundation.
Lawrence Velázquez

Respostas:

39

~/.CFUserTextEncodingarmazena a codificação de texto padrão e o idioma preferido para um usuário. Abaixo está um trecho da Nota técnica 2228 da Biblioteca de referência do Mac OS X com mais algumas informações:

O Core Foundation tenta acessar o diretório inicial do usuário para determinar sua codificação de texto padrão (armazenada no arquivo ~ / .CFUserTextEncoding). Se você alternar o EUID para o UID do usuário que efetuou login e ligar para CF, poderá ter problemas quando o Core Foundation acessar esse arquivo. Você pode impedir esse acesso definindo uma variável de ambiente que informe ao Core Foundation a codificação de texto padrão a ser usada. O nome da variável de ambiente é __CF_USER_TEXT_ENCODING. Seu valor deve ser construído com a string de formato "0x% X: 0: 0", em que% X é substituído pelo UID do usuário que efetuou login.

Por padrão, minha cópia de ~/.CFUserTextEncoding0: 0 continha. O primeiro número à esquerda dos dois pontos representa a codificação padrão. O 0 no meu arquivo é para kCFStringEncodingMacRoman. Uma lista de codificações e o número associado podem ser encontrados na Referência de CFString

O valor após os dois pontos representa o idioma preferido do usuário. Para alterar o idioma preferido, vá para Idioma e texto em Preferências do sistema e mova um novo idioma para o topo da lista. Para confirmar a alteração do arquivo, você pode abrir o Terminal e digitar cat ~/.CFUserTextEncoding, que resultou em 0: 3 quando mudei meu idioma preferido de inglês para alemão.

Matthew Rankin
fonte
Tão. Parece uma boa ideia alterar o valor da codificação para o do kCFStringEncodingUTF8?
kch
4
Yay, legal. Alterei o arquivo para 0x08000100: 0 e, agora, acionar o Quick Look do Finder em arquivos de texto / simples UTF-8 exibe caracteres estendidos corretamente.
kch
2
echo "0x08000100:0" > ~/.CFUserTextEncodingfaz o truque, mas isso causa problemas ao salvar arquivos no Adobe Illustrator CS5.
Mathias Bynens
Use echo -n "0x08000100:0x0" > ~/.CFUserTextEncodingpara evitar adicionar uma nova linha não intencional.
MERM
Observe que abrir o painel de preferências Idioma e região pode redefinir o arquivo para a codificação padrão.
ShadSterling
4

O arquivo é simplesmente dois números separados por dois pontos; o segundo corresponde ao idioma ativo. Respondendo suas perguntas:

Por que eu tenho isso? Para que serve, o que isso afeta? Os aplicativos o utilizam para atrair o ambiente ao iniciar.

Eu não posso tê-lo? Provavelmente será recriado.

Em que formato está? Arbitrário.

Devo editá-lo manualmente? Se você estiver pronto para o seu Mac estar em um idioma aleatório!

Eu poderia, independentemente? Claro.

Jeremy L
fonte
Por que você declara que o formato é arbitrário? O formato de um número, dois pontos, número (por exemplo, 0: 0) no arquivo corresponde à codificação de texto padrão do usuário e ao idioma preferido do usuário. Não me parece arbitrário.
Matthew Rankin
11
Uma vírgula seria suficiente, assim como um espaço, um apóstrofo, etc. Os números poderiam ter sido o contrário. Eles foram escolhidos arbitrariamente.
Jeremy L
11
Formato! = Conteúdo.
Jeremy L
11
A alteração desse arquivo não terá impacto no idioma em que o Mac é executado. Ele é armazenado na matriz AppleLanguages ​​nas preferências de domínio global do usuário.
lensovet 30/08/14