Mac: Do czego służy ~ / .CFUserTextEncoding?

38

Mam więc ten .CFUserTextEncodingplik w moim domu, reż. Wyniki wyszukiwania Google są mniej niż idealne, wypełnione starymi brzydkimi stronami forum. Apple daje mi niepowiązany artykuł na temat wsparcia. ADC daje mi niepowiązane uwagi techniczne.

Do tej pory wszystko, co mogę zebrać, to to, że jest to związane z Core Foundation i, no cóż, pewnym kodowaniem tekstu użytkownika. Tak czy inaczej:

  • Dlaczego to mam?
  • Czy nie mogę tego mieć
  • Po co to ma wpływ?
  • W jakim formacie?
  • Czy powinienem edytować go ręcznie?
  • Czy mógłbym, niezależnie od tego?
kch
źródło
czy powinno to być na przepełnieniu stosu z powodu rdzenia podstawy?
kch
Możesz mieć więcej szczęścia w SO, ponieważ jest to związane z CoreFoundation.
Lawrence Velázquez,

Odpowiedzi:

39

~/.CFUserTextEncodingprzechowuje domyślne kodowanie tekstu i preferowany język dla użytkownika. Poniżej znajduje się fragment Noty technicznej 2228 Biblioteki referencyjnej Mac OS X z dodatkowymi informacjami:

Core Foundation próbuje uzyskać dostęp do katalogu domowego użytkownika w celu ustalenia domyślnego kodowania tekstu (zapisanego w pliku ~ / .CFUserTextEncoding). Jeśli zmienisz EUID na UID zalogowanego użytkownika, a następnie wywołasz CF, możesz mieć problemy z dostępem do tego pliku przez Core Foundation. Można temu zapobiec, ustawiając zmienną środowiskową, która informuje Core Foundation o domyślnym kodowaniu tekstu. Nazwa zmiennej środowiskowej to __CF_USER_TEXT_ENCODING. Jego wartość powinna być skonstruowana za pomocą ciągu formatu „0x% X: 0: 0”, gdzie% X jest zastępowany przez UID zalogowanego użytkownika.

Domyślnie moja kopia ~/.CFUserTextEncodingzawierała 0: 0. Pierwsza liczba po lewej stronie dwukropka oznacza domyślne kodowanie. 0 w moim pliku jest dla kCFStringEncodingMacRoman. Listę kodowań i powiązany numer można znaleźć w CFString Reference

Wartość po dwukropku reprezentuje preferowany język użytkownika. Aby zmienić preferowany język, przejdź do opcji Język i tekst w Preferencjach systemowych i przenieś nowy język na górę listy. Aby potwierdzić zmianę pliku, możesz otworzyć Terminal i wpisać cat ~/.CFUserTextEncoding, co dało 0: 3, kiedy zmieniłem preferowany język z angielskiego na niemiecki.

Matthew Rankin
źródło
Więc. Czy zmiana wartości kodowania na wartość kCFStringEncodingUTF8 wydaje się dobrym pomysłem?
kch
4
Fajnie. Zmieniłem plik na 0x08000100: 0, a teraz uruchomienie Szybkiego przeglądu Findera w plikach tekstowych / zwykłych UTF-8 wyświetla poprawnie znaki rozszerzone.
kch
2
echo "0x08000100:0" > ~/.CFUserTextEncodingrozwiązuje ten problem, ale wiadomo, że powoduje to problemy podczas zapisywania plików w programie Adobe Illustrator CS5.
Mathias Bynens,
Użyj, echo -n "0x08000100:0x0" > ~/.CFUserTextEncodingaby uniknąć dodania niezamierzonej nowej linii.
MERM
Pamiętaj, że otwarcie panelu preferencji Język i region może zresetować plik do domyślnego kodowania.
ShadSterling
4

Plik to po prostu dwie liczby oddzielone dwukropkiem; drugi z nich odpowiada aktywnemu językowi. Odpowiadając na twoje pytania:

Dlaczego to mam? Po co to ma wpływ? Aplikacje używają go do uruchamiania w środowisku podczas uruchamiania.

Czy nie mogę tego mieć Najprawdopodobniej zostanie odtworzony.

W jakim formacie? Arbitralny.

Czy powinienem edytować go ręcznie? Jeśli jesteś gotowy, aby Twój komputer Mac był w przypadkowym języku!

Czy mógłbym, niezależnie od tego? Oczywiście.

Jeremy L.
źródło
Dlaczego twierdzisz, że format jest dowolny? Format liczby, dwukropka, liczby (np. 0: 0) w pliku odpowiada domyślnemu kodowaniu tekstu użytkownika i preferowanemu językowi użytkownika. Nie wydaje mi się to arbitralne.
Matthew Rankin,
1
Wystarczyłby przecinek, podobnie jak spacja, apostrof itp. Liczby mogły być na odwrót. Zostali arbitralnie wybrani.
Jeremy L,
1
Format! = Treść.
Jeremy L,
1
Zmiana tego pliku nie będzie miała wpływu na język, w którym działa komputer Mac. Jest on przechowywany w tablicy AppleLanguages ​​w preferencjach domeny globalnej użytkownika.
lensovet