Mac: ~ / .CFUserTextEncoding để làm gì?


38

Vì vậy, tôi có .CFUserTextEncodingtập tin này trong thư mục nhà của tôi. Kết quả tìm kiếm của Google kém lý tưởng, chứa đầy các trang diễn đàn xấu xí cũ. Apple cung cấp cho tôi một bài viết hỗ trợ không liên quan. ADC cho tôi một Technote không liên quan.

Tất cả những gì tôi có thể thu thập cho đến nay là nó liên quan đến Core Foundation, và, tốt, một số mã hóa văn bản người dùng. Dù sao:

  • Tại sao tôi có nó?
  • Tôi không thể có nó?
  • Nó dùng để làm gì, nó ảnh hưởng gì?
  • Nó ở định dạng nào?
  • Tôi có nên chỉnh sửa bằng tay không?
  • Tôi có thể, bất kể?

hoặc điều này nên được trên stackoverflow vì nền tảng cốt lõi?
kch

Bạn có thể gặp may mắn hơn tại SO, vì nó liên quan đến CoreFoundation.
Lawrence Velázquez

Câu trả lời:


39

~/.CFUserTextEncodinglưu trữ mã hóa văn bản mặc định và ngôn ngữ ưa thích cho người dùng. Dưới đây là đoạn trích từ Ghi chú kỹ thuật 2228 của Thư viện tham khảo Mac OS X với một số thông tin khác:

Core Foundation cố gắng truy cập vào thư mục chính của người dùng để xác định mã hóa văn bản mặc định của họ (được lưu trong tệp ~ / .CFUserTextEncoding). Nếu bạn chuyển EUID sang UID của người dùng đăng nhập và sau đó gọi CF, bạn có thể gặp sự cố khi Core Foundation truy cập tệp này. Bạn có thể ngăn truy cập này bằng cách đặt biến môi trường cho Core Foundation biết mã hóa văn bản mặc định sẽ sử dụng. Tên biến môi trường là __CF_USER_TEXT_ENCODING. Giá trị của nó phải được xây dựng bằng chuỗi định dạng "0x% X: 0: 0", trong đó% X được thay thế bằng UID của người dùng đăng nhập.

Theo mặc định, bản sao của tôi ~/.CFUserTextEncodingchứa 0: 0. Số đầu tiên bên trái dấu hai chấm biểu thị mã hóa mặc định. Số 0 trong tệp của tôi là dành cho kCFStringEncodingMacRoman. Có thể tìm thấy danh sách mã hóa và số liên quan trong Tham chiếu CFString

Giá trị sau dấu hai chấm đại diện cho ngôn ngữ ưa thích của người dùng. Để thay đổi ngôn ngữ ưa thích, hãy chuyển đến Ngôn ngữ & Văn bản trong Tùy chọn hệ thống và di chuyển ngôn ngữ mới lên đầu danh sách. Để xác nhận tập tin đã thay đổi thành gì, bạn có thể mở Terminal và gõ cat ~/.CFUserTextEncoding, kết quả là 0: 3 khi tôi thay đổi ngôn ngữ ưa thích của mình từ tiếng Anh sang tiếng Đức.


Vì thế. Nghe có vẻ là một ý tưởng tốt để thay đổi giá trị mã hóa thành giá trị của kCFStringEncodingUTF8?
kch

4
Yay, mát mẻ. Tôi đã thay đổi tệp thành 0x08000100: 0 và bây giờ kích hoạt Tìm kiếm nhanh của Trình tìm kiếm trên tệp văn bản / văn bản UTF-8 hiển thị đúng các ký tự mở rộng.
kch

2
echo "0x08000100:0" > ~/.CFUserTextEncodingthực hiện thủ thuật này, nhưng điều này được biết là gây ra sự cố khi lưu tệp trong Adobe Illustrator CS5.
Mathias Bynens

Sử dụng echo -n "0x08000100:0x0" > ~/.CFUserTextEncodingđể tránh thêm một newliine không chủ ý.
NHIỆM VỤ

Lưu ý rằng việc mở bảng tùy chọn Ngôn ngữ & Vùng của bạn có thể đặt lại tệp về mã hóa mặc định.
ShadSterling

4

Các tập tin chỉ đơn giản là hai số cách nhau bởi một dấu hai chấm; thứ hai trong đó tương ứng với ngôn ngữ hoạt động. Trả lời câu hỏi của bạn:

Tại sao tôi có nó? Nó dùng để làm gì, nó ảnh hưởng gì? Các ứng dụng sử dụng nó để kéo trong môi trường khi bắt đầu.

Tôi không thể có nó? Nó rất có thể sẽ được tạo lại.

Nó ở định dạng nào? Tùy tiện.

Tôi có nên chỉnh sửa bằng tay không? Nếu bạn đã sẵn sàng để máy Mac của bạn có ngôn ngữ ngẫu nhiên!

Tôi có thể, bất kể? Tất nhiên.


Tại sao bạn nói rằng định dạng là tùy ý? Định dạng của một số, dấu hai chấm, số (ví dụ: 0: 0) trong tệp tương ứng với mã hóa văn bản mặc định của người dùng và ngôn ngữ ưa thích của người dùng. Không có vẻ độc đoán với tôi.
Matthew Rankin

1
Dấu phẩy sẽ đủ, cũng như một khoảng trắng, dấu nháy đơn, v.v. Các con số có thể là cách khác. Họ đã được lựa chọn tùy ý.
Jeremy L

1
Định dạng! = Nội dung.
Jeremy L

1
Thay đổi tệp này sẽ không ảnh hưởng đến ngôn ngữ mà máy Mac của bạn chạy. Nó được lưu trữ trong mảng AppleLacular trong tùy chọn tên miền toàn cầu của người dùng của bạn.
lensovet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.