Mac: มีอะไร ~ / .CFUserTextEncoding เพื่ออะไร


38

ดังนั้นฉันจึงมี.CFUserTextEncodingไฟล์นี้ในผบที่บ้านของฉัน ผลการค้นหาของ Google นั้นน้อยกว่าอุดมคติซึ่งเต็มไปด้วยหน้าเว็บบอร์ดที่น่าเกลียด Apple ให้บทความสนับสนุนที่ไม่เกี่ยวข้องกับฉัน ADC ให้ technote ที่ไม่เกี่ยวข้องกับฉัน

ทั้งหมดที่ฉันสามารถรวบรวมได้ก็คือมันเกี่ยวข้องกับ Core Foundation และการเข้ารหัสข้อความของผู้ใช้บางคน อย่างไรก็ตาม:

  • ทำไมฉันถึงมีมัน
  • ฉันไม่มีมันได้ไหม
  • มีไว้เพื่ออะไรมันมีผลกระทบอะไรบ้าง
  • อยู่ในรูปแบบใด
  • ฉันควรแก้ไขด้วยตนเองหรือไม่
  • ฉันสามารถทำได้หรือไม่

หรือสิ่งนี้ควรอยู่ใน stackoverflow เนื่องจากรากฐานที่สำคัญ?
kch

คุณอาจโชคดีกว่านี้ได้เพราะมันเกี่ยวข้องกับ CoreFoundation
Lawrence Velázquez

คำตอบ:


39

~/.CFUserTextEncodingเก็บการเข้ารหัสข้อความเริ่มต้นและภาษาที่ต้องการสำหรับผู้ใช้ ด้านล่างนี้เป็นข้อความที่ตัดตอนมาจากหมายเหตุด้านเทคนิค 2228ของไลบรารีอ้างอิง Mac OS X พร้อมข้อมูลเพิ่มเติม:

Core Foundation พยายามเข้าถึงไดเรกทอรีหลักของผู้ใช้เพื่อกำหนดการเข้ารหัสข้อความเริ่มต้นของพวกเขา (เก็บไว้ในไฟล์ ~ / .CFUserTextEncoding) หากคุณเปลี่ยน EUID เป็น UID ของการเข้าสู่ระบบของผู้ใช้แล้วโทร CF คุณอาจมีปัญหาเมื่อ Core Foundation เข้าถึงไฟล์นี้ คุณสามารถป้องกันการเข้าถึงนี้โดยการตั้งค่าตัวแปรสภาพแวดล้อมที่บอก Core Core ว่าการเข้ารหัสข้อความเริ่มต้นที่จะใช้ ชื่อตัวแปรสภาพแวดล้อมคือ __CF_USER_TEXT_ENCODING ค่าของมันควรจะถูกสร้างขึ้นด้วยสตริงรูปแบบ "0x% X: 0: 0" โดยที่% X จะถูกแทนที่ด้วย UID ของการเข้าสู่ระบบของผู้ใช้

โดยค่าเริ่มต้นสำเนาของฉัน~/.CFUserTextEncodingมี 0: 0 หมายเลขแรกทางด้านซ้ายของโคลอนแสดงถึงการเข้ารหัสเริ่มต้น 0 ในไฟล์ของฉันสำหรับ kCFStringEncodingMacRoman รายการการเข้ารหัสและหมายเลขที่เกี่ยวข้องสามารถพบได้ในการอ้างอิง CFString

ค่าที่อยู่หลังเครื่องหมายจุดคู่จะแทนภาษาที่ผู้ใช้ต้องการ หากต้องการเปลี่ยนภาษาที่ต้องการให้ไปที่ภาษาและข้อความภายใต้การตั้งค่าระบบและย้ายภาษาใหม่ที่ด้านบนของรายการ เพื่อยืนยันสิ่งที่ไฟล์เปลี่ยนเป็นคุณสามารถเปิด Terminal และประเภทcat ~/.CFUserTextEncodingซึ่งให้ผล 0: 3 เมื่อฉันเปลี่ยนภาษาที่ฉันต้องการจากภาษาอังกฤษเป็นภาษา Deutsch


ดังนั้น. เป็นความคิดที่ดีหรือไม่ที่จะเปลี่ยนค่าการเข้ารหัสเป็น kCFStringEncodingUTF8
kch

4
เย่อ ฉันเปลี่ยนไฟล์เป็น 0x08000100: 0 และตอนนี้ทริกเกอร์ไฟล์ Quick Look ของ Finder's on UTF-8 ข้อความ / ไฟล์ธรรมดาจะแสดงอักขระเพิ่มเติมอย่างถูกต้อง
kch

2
echo "0x08000100:0" > ~/.CFUserTextEncodingทำเคล็ดลับ แต่เป็นที่ทราบกันดีว่าทำให้เกิดปัญหาเมื่อบันทึกไฟล์ใน Adobe Illustrator CS5
งัด Bynens

ใช้echo -n "0x08000100:0x0" > ~/.CFUserTextEncodingเพื่อหลีกเลี่ยงการเพิ่มโฆษณาใหม่โดยไม่ได้ตั้งใจ
MERM

โปรดทราบว่าการเปิดแผงการตั้งค่าภาษาและภูมิภาคของคุณอาจรีเซ็ตไฟล์เป็นการเข้ารหัสเริ่มต้น
ShadSterling

4

ไฟล์นี้เป็นเพียงตัวเลขสองตัวคั่นด้วยเครื่องหมายโคลอน ครั้งที่สองซึ่งสอดคล้องกับภาษาที่ใช้งานอยู่ ตอบคำถามของคุณ:

ทำไมฉันถึงมีมัน มีไว้เพื่ออะไรมันมีผลกระทบอะไรบ้าง แอปพลิเคชันใช้สำหรับดึงในสภาพแวดล้อมเมื่อเริ่มต้น

ฉันไม่มีมันได้ไหม มันจะถูกสร้างขึ้นใหม่มากที่สุด

อยู่ในรูปแบบใด โดยพลการ

ฉันควรแก้ไขด้วยตนเองหรือไม่ หากคุณพร้อมที่จะให้ Mac ของคุณเป็นภาษาแบบสุ่ม!

ฉันสามารถทำได้หรือไม่ แน่นอน.


เหตุใดคุณระบุว่ารูปแบบเป็นแบบสุ่ม? รูปแบบของตัวเลขลำไส้ใหญ่ตัวเลข (เช่น 0: 0) ในไฟล์สอดคล้องกับการเข้ารหัสข้อความเริ่มต้นของผู้ใช้และภาษาที่ผู้ใช้ต้องการ ดูเหมือนจะไม่ชอบฉัน
แมทธิวคิ่

1
เครื่องหมายจุลภาคจะพอเพียงเช่นเดียวกับช่องว่างเครื่องหมายอะโพสโทรฟี ฯลฯ ตัวเลขอาจเป็นไปในทางอื่น พวกเขาถูกเลือกโดยพลการ
Jeremy L

1
รูปแบบ! = เนื้อหา
Jeremy L

1
การเปลี่ยนไฟล์นี้จะไม่มีผลกระทบกับภาษาที่ Mac ของคุณใช้งานซึ่งจัดเก็บอยู่ในอาร์เรย์ AppleLanguages ​​ในการตั้งค่าโดเมนทั่วโลกของผู้ใช้ของคุณ
lensovet
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.