PHP设置区域设置,是否为UTF-8


PHP setlocale, UTF-8 or not?

我已经通过

安装了zh_TW区域设置
sudo locale-gen --purge en_US.UTF-8 zh_TW

它的代码集是BIG5

locale: zh_TW           directory: /usr/lib/locale/zh_TW
-------------------------------------------------------------------------------
    title | Chinese locale for Taiwan R.O.C.
    email | bug-glibc-locales@gnu.org
 language | Chinese
territory | Taiwan R.O.C.
 revision | 0.2
     date | 2000-08-02
  codeset | BIG5
我有一个简单的PHP脚本
<?php
putenv('LC_ALL=zh_TW');
setlocale(LC_ALL, 'zh_TW');
bindtextdomain("myPHPApp", "./locale");
textdomain("myPHPApp");
echo gettext("hello");

我已经准备了一个mo文件(在UTF8),并放在

./locale/zh_TW/LC_MESSAGES/myPHPApp.mo 

echo确实工作,那么,安装区域设置(如zh_TW)的意义是什么?utf - 8

安装像zh_TW.UTF-8这样的语言环境有什么意义?

区域设置规范中.[codeset]后缀的作用是指定一个代码集。对于特定的语言,如果UTF-8是默认的代码集,则不必显式地指定它—只指定zh_TW就可以了(但是也可以指定zh_TW.UTF-8)。如果您有可用的控制台,您可以通过locale -a列出可用的区域设置。

但请注意,这可以是系统特定的!而在linux上,zh_TW默认是UTF-8, onIBM将是BIG5和Windows CP950!

根据我对中文的理解,它们每一个都有简体和繁体两种不同的版本。通过指定zh_TW可能是在网页上显示繁体中文字符。由于UTF-8在您的头文件中定义,并且默认情况下它支持两种中文语言,因此无需再安装它们。

*附加信息-如果我没弄错的话,如果中文字符要存储在数据库中的某个地方,你必须设置zh_TW的区域设置。