* nix语言环境设置中zh_CN.UTF-8和en_US.UTF-8的不同之处是什么?

时间:2014-01-16 04:45:13

标签: unix utf-8

在使用* nix系统时,我总是将语言环境设置为en_US.UTF-8,然后这可以帮助我在标准输出上正确显示中文。

但我知道也有zh_CN.UTF-8用于区域设置,所以我想知道:
他们的不同之处是什么? 我什么时候应该使用zh_CN.UTF-8或en_US.UTF-8?

2 个答案:

答案 0 :(得分:2)

对于zh本身没有关于zh的知识,在你提到的两个语言环境之间进行更改可能会更改单词边界处理某些字符的方式以及不同程序如何产生输出。

例如,LC_CTYPE=zh_CN.UTF-8很可能会将带有重音符号的字符视为“成为单词的一部分”,而LC_CTYPE=en_US.UTF-8可能不会将这些字符视为单词的一部分。

日期和货币格式也是如此。因为我很确定zh将具有与我们不同的日期/货币格式。

为了给你一个具体的例子,这是我在相对较新的Ubuntu GNU / Linux系统中使用两个不同语言环境从date(1)获得的内容:

user@devbook:~$ LC_TIME=fi_FI.UTF-8 date
to 16.1.2014 07.14.36 +0200
user@devbook:~$ LC_TIME=en_US.UTF-8 date
Thu Jan 16 07:14:42 EET 2014

答案 1 :(得分:1)

根据文件here

  

区域设置包含许多类别   存在依赖于国家/地区的格式或其他规范一个   程序的语言环境定义了它的代码集,日期和时间格式   约定,货币约定,十进制格式约定和   整理(排序)顺序。

如果两个区域设置的名称都包含UTF-8,则它们具有相同的编码。它们的区别在于依赖于语言环境的设置。例如,@ Sami Laine的时间格式已经指出;货币符号位于zh_CN.UTF-8,货币符号为,而en_US.UTF-8货币符号为$

更完整的差异列表

根据here,要获得两个语言环境之间更完整的区别,请运行以下脚本,

CATS="LC_CTYPE LC_COLLATE LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES"
LANG=en_US.utf8 locale -k $CATS > en_US.utf8.out
LANG=zh_CN.utf8 locale -k $CATS > zh_CN.utf8.out

diff en_US.utf8.out zh_CN.utf8.out

上述脚本应该在两个语言环境之间给出更详细的区别。