Mac: Untuk apa ~ / .CFUserTextEncoding?

38

Jadi saya punya .CFUserTextEncodingfile ini di dir rumah saya. Hasil pencarian Google kurang dari ideal, diisi dengan halaman forum jelek yang lama. Apple memberi saya artikel dukungan yang tidak terkait. ADC memberi saya teknik yang tidak terkait.

Yang bisa saya kumpulkan sejauh ini adalah bahwa itu terkait dengan Core Foundation, dan, well, beberapa penyandian teks pengguna. Bagaimanapun:

  • Mengapa saya memilikinya?
  • Tidak bisakah saya memilikinya?
  • Untuk apa, apa pengaruhnya?
  • Apa formatnya?
  • Haruskah saya mengeditnya secara manual?
  • Bisakah saya, dengan rasa hormat?
kch
sumber
atau haruskah ini berada di stackoverflow karena fondasi inti?
kch
Anda mungkin lebih beruntung di SO, karena ini terkait dengan CoreFoundation.
Lawrence Velázquez

Jawaban:

39

~/.CFUserTextEncodingmenyimpan penyandian teks default dan bahasa pilihan untuk pengguna. Di bawah ini adalah kutipan dari Catatan Teknis 2228 dari Perpustakaan Referensi Mac OS X dengan beberapa informasi lebih lanjut:

Core Foundation mencoba mengakses direktori home pengguna untuk menentukan penyandian teks default mereka (disimpan dalam file ~ / .CFUserTextEncoding). Jika Anda mengalihkan EUID ke UID dari pengguna yang masuk dan kemudian menelepon CF, Anda mungkin memiliki masalah ketika Core Foundation mengakses file ini. Anda dapat mencegah akses ini dengan mengatur variabel lingkungan yang memberi tahu Core Foundation pengkodean teks default untuk digunakan. Nama variabel lingkungan adalah __CF_USER_TEXT_ENCODING. Nilainya harus dibangun dengan format string "0x% X: 0: 0", di mana% X diganti oleh UID dari pengguna yang masuk log.

Secara default, salinan saya ~/.CFUserTextEncodingberisi 0: 0. Angka pertama di sebelah kiri titik dua menunjukkan penyandian default. 0 di file saya adalah untuk kCFStringEncodingMacRoman. Daftar penyandian dan nomor terkait dapat ditemukan di Referensi CFString

Nilai setelah titik dua mewakili bahasa pilihan pengguna. Untuk mengubah bahasa yang disukai, buka Bahasa & Teks di bawah System Preferences dan pindahkan bahasa baru ke atas daftar. Untuk mengonfirmasi perubahan file, Anda dapat membuka Terminal dan ketik cat ~/.CFUserTextEncoding, yang menghasilkan 0: 3 ketika saya mengubah bahasa pilihan saya dari Bahasa Inggris ke Bahasa Deutsch.

Matthew Rankin
sumber
Begitu. Apakah itu terdengar seperti ide yang baik untuk mengubah nilai pengkodean ke nilai dari kCFStringEncodingUTF8?
kch
4
Yay, keren. Saya mengubah file menjadi 0x08000100: 0, dan sekarang memicu Find Quick Look pada file teks / polos UTF-8 menampilkan karakter yang diperluas dengan benar.
kch
2
echo "0x08000100:0" > ~/.CFUserTextEncodingmemang bisa, tetapi ini diketahui menyebabkan masalah saat menyimpan file di Adobe Illustrator CS5.
Mathias Bynens
Gunakan echo -n "0x08000100:0x0" > ~/.CFUserTextEncodinguntuk menghindari penambahan newliine yang tidak disengaja.
MERM
Perhatikan bahwa membuka panel preferensi Bahasa & Wilayah Anda dapat mengatur ulang file ke penyandian default.
ShadSterling
4

File ini hanya dua angka yang dipisahkan oleh tanda titik dua; yang kedua sesuai dengan bahasa aktif. Menjawab pertanyaan Anda:

Mengapa saya memilikinya? Untuk apa, apa pengaruhnya? Aplikasi menggunakannya untuk menarik lingkungan ketika memulai.

Tidak bisakah saya memilikinya? Kemungkinan besar akan dibuat ulang.

Apa formatnya? Sewenang-wenang.

Haruskah saya mengeditnya secara manual? Jika Anda siap untuk Mac Anda menggunakan bahasa acak!

Bisakah saya, dengan rasa hormat? Tentu saja.

Jeremy L
sumber
Mengapa Anda menyatakan bahwa formatnya sewenang-wenang? Format angka, titik dua, angka (misalnya, 0: 0) dalam file sesuai dengan pengodean teks default pengguna dan bahasa pilihan pengguna. Tampaknya tidak sewenang-wenang bagi saya.
Matthew Rankin
1
Sebuah koma akan cukup, seperti ruang, apostrof, dll. Jumlahnya bisa saja sebaliknya. Mereka dipilih secara sewenang-wenang.
Jeremy L
1
Format! = Konten.
Jeremy L
1
Mengubah file ini tidak akan berdampak pada bahasa apa yang digunakan Mac Anda. Itu disimpan dalam array AppleLanguages ​​di preferensi domain global pengguna Anda.
lensovet