Tên mã hóa thích hợp để sử dụng trong miền địa phương cho UTF-8 là gì?


9

Chỉ cần tự hỏi ở đây như tôi có trên hệ thống CentOS 7 này:

$ locale -a 
<snip>
en_US.utf8
<snip>

và chưa:

$ localectl 
System Locale: LANG=en_US.UTF-8

Để thêm vào đó, tên ưa thích theo X11 (/usr/share/X11/locale/locale.dir) là:

$ grep 'en_US.UTF-8$' /usr/share/X11/locale/locale.dir 
en_US.UTF-8/XLC_LOCALE                  en_US.UTF-8
en_US.UTF-8/XLC_LOCALE:                 en_US.UTF-8

May mắn thay cho en_US.utf8, có một bí danh:

$ grep 'en_US.utf8' /usr/share/X11/locale/locale.alias
en_US.utf8                                      en_US.UTF-8
en_US.utf8:                                     en_US.UTF-8

Một số người khác không may mắn như vậy, ví dụ ru_UA.utf8:

$ locale -a | grep ru_UA.utf8
ru_UA.utf8
$ grep 'ru_UA.utf8' /usr/share/X11/locale/locale.alias
$ grep 'ru_UA.UTF-8' /usr/share/X11/locale/locale.dir
en_US.UTF-8/XLC_LOCALE                  ru_UA.UTF-8
en_US.UTF-8/XLC_LOCALE:                 ru_UA.UTF-8

Lý do điều này hơi khó chịu nếu ngôn ngữ được chọn không có trong miền địa phương X11 là vì GDM (hoặc phiên gnome?) Buộc sử dụng phiên bản "utf8", phá vỡ các chương trình X bằng các thông báo như: "Cảnh báo: ngôn ngữ không được hỗ trợ bởi Xlib, ngôn ngữ được đặt thành C ". Tôi chỉ có thể chỉnh sửa /usr/share/X11/locale/locale.alias, nhưng thật tuyệt khi có thêm thông tin về phiên bản nào thực sự đúng.

Câu trả lời:


5

Nhận xét trong các nguồn GNU libc (intl / l10nflist.c: _nl_n normalize_codeset) trạng thái:

Không có tiêu chuẩn cho tên bộ mã.

Tên bộ mã được chuẩn hóa bởi hàm đó thành chữ thường với tất cả các ký tự không chữ và số bị tước, tức là "UTF-8" biến thành "utf8".

Tên miền địa phương trong kho lưu trữ miền địa phương đang sử dụng tên bộ mã được chuẩn hóa.

Vì không có tiêu chuẩn, GDM hoàn toàn có quyền sử dụng "utf8" và các ngôn ngữ như 'ru_UA.utf8' không hợp lệ . "utf8" có thể không được ưa thích, nhưng nó hoàn toàn có thể chấp nhận được (ít nhất là theo tiêu chuẩn libc) vì đây là dạng chuẩn hóa.


Không có tiêu chuẩn chính thức nhưng có một quy ước mà ngành công nghiệp đang kết hợp xung quanh, iefor US English: us_US.UTF-8
fpmurphy

Tôi cũng muốn nghĩ như vậy, nhưng ít nhất một phần của "Công nghiệp" không thể dính một lỗi chính tả cho bộ mã UTF-8 trong một trang trên sổ tay của họ: access.redhat.com/documentation/en- US / Red_Hat_ Entryprise_Linux / Lỗi - có thể X11 locale.alias chỉ cần một số loại ký tự đại diện% .utf8 =% .UTF-8 hỗ trợ.
lmz
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.