How to Set Locales (i18n) On a Linux or Unix


原文链接: How to Set Locales (i18n) On a Linux or Unix

各种字符集和编码详解 - 快乐就好 - 博客园
十分钟搞清字符集和字符编码 - 文章 - 伯乐在线
unicode wiki
unicode 箭头符号
unicode 装饰符号 0x27xx

编码

man -k unicode
ascii

ASCII
转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当做文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写的规则。第二个原因是,有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表

js中的escape的用法汇总

escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

  1. escape(str) 方法,它用于转义不能用明文正确发送的任何字符。比如,电话号码中的空格将被转换成字符 %20,从而能够在 URL 中传递这些字符

escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如"春节"的返回结果是%u6625%u8282,,escape()不对"+"编码
主要用于汉字编码,现在已经不提倡使用。

encodeURI()是Javascript中真正用来对URL编码的函数。
编码整个url地址,但对特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。对应的解码函数是:decodeURI()。

encodeURIComponent()
能编码"; / ? : @ & = + $ , #"这些特殊字符。对应的解码函数是decodeURIComponent()。

我想要传递带&符号的网址,所以用encodeURIComponent()

  1. url 编码 [形式为 %20] 字符集可能是utf8 肯能是gbk
    ```

RFC1738 统一资源定位器(URL)
只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。
2.2 URL字符编码问题

如果存在下面的情况:八位字节数在US-ASCII字符集中没有相应的可显示字符,或者使
用相应字符会产生不安全因素,或者相应的字符被保留用于特定的URL方案的解释,那
么它们必须被编成代码。

  1. 没有相应的可显示字符:
    URL只能用US-ASCII字符编码集中的可显示字符表示。US-ASCII中没有用到十六进制的
    八位字节80-FF,并且00-1F和7F代表了控制字符,这些字符必须进行编码。
  2. 不安全:
    字符不安全的原因很多。空格字符就是不安全的,因为URL在被转录或者被排版或者被
    字处理程序处理后其中重要的空格可能被忽略,而可忽略的空格却有可能被解释了。“<”
    和“>”字符也是不安全的,因为它们被用来作为URL在文本中的分隔符;而在有些系统
    中用引号“"”来界定URL。“#”字符也是不安全的,因为它在万维网和其他一些系统中
    被用来从“片段/锚点”标志符中界定URL,所以它通常都要被编码。字符“%”被用来对
    其他字符进行编码,它也是不安全的。其他一些字符,如:
    "{", "}", "|", "\", "^", "~","[", "]",和"`"
    ,由于网关和其他传输代理有时会对这些字符进行修改,所以它们也是不安全的。
    必须对URL中所有不安全的字符进行编码。例如,URL中的字符“#”即使是在通常不处
    理片断或者锚点标志符的系统也需要进行编码,这样如果这个URL被拷贝到使用这些标
    志符的系统中,也不必改变URL编码了。
  3. 保留:
    许多URL方案保留了一些字符并赋予特定的含义:它们出现在URL的特定部位并表示特
    定的含义。如果一个字符对应的八位字节在方案中被保留了,那么这个八位字节必须进行
    编码。字符";","/", "?", ":", "@", "=" 和 "&"可能被某个方案所保留,除此之外没
    有其他的保留字符。
    通常情况下一个八位字节被用一个字符表示后或者被编码之后,URL的解释都是一样的。
    但这对于保留字符来说就不适用了:对某一特定方案的保留字符进行编码可能会改变URL
    的语义。
    这样,在URL中只有字母与数字,以及特殊字符“$-_.+!*'(),”和用作保留目的的保留
    字符可以不进行编码。
    另一方面,不必进行编码的字符(包括字母与数字)如果出现在URL的特定部位,只要
    它们不用作保留目的,则可进行编码。

  4. html_entity_decode
    那么HTML Entity编码具体应该做哪些事情呢?它需要对下面这6个特殊字符进行编码:
    HTML字符实体(Character Entities)

有些字符在HTML里有特别的含义,比如小于号<就表示HTML Tag的开始,这个小于号是不显示在我们最终看到的网页里的。那如果我们希望在网页中显示一个小于号,该怎么办呢?

这就要说到HTML字符实体(HTML Character Entities)了。

一个字符实体(Character Entity)分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。

比如,要显示小于号,就可以写<或者<。

用实体(Entity)名字的好处是比较好理解,一看lt,大概就猜出是less than的意思,但是其劣势在于并不是所有的浏览器都支持最新的Entity名字。而实体(Entity)编号,各种浏览器都能处理。

注意:Entity是区分大小写的。

如何显示空格

通常情况下,HTML会自动截去多余的空格。不管你加多少空格,都被看做一个空格。比如你在两个字之间加了10个空格,HTML会截去9个空格,只保留一个。为了在网页中增加空格,你可以使用 表示空格。

最常用的字符实体(Character Entities)

显示结果 说明 Entity Name Entity Number

显示一个空格    
< 小于 < <

大于 > >
& &符号 & &
" 双引号 " "

其他常用的字符实体(Character Entities)

显示结果 说明 Entity Name Entity Number

© 版权 © ©
® 注册商标 ® ®
× 乘号 × ×
÷ 除号 ÷ ÷
```


查看 4E00 - 4EFF 之间的unicode自符

unicode -x 4E00..

#查看 ascii

字符集(Charset):
ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集
字符编码(Character Encoding):
Unicode是字符集,UTF-32/ UTF-16/ UTF-8是三种字符编码方案

How to Set Locales (i18n) On a Linux or Unix
http://www.cyberciti.biz/faq/how-to-set-locales-i18n-on-a-linux-unix/
http://www.linuxfly.org/post/424/
http://blog.csdn.net/lwm_1985/article/details/8509506

  1. 添加语言支持
    sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
    sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen

  2. locale-gen和dpkg-reconfigure locales 都是根据 /etc/locale.gen 生成指定的语言
    sudo locale-gen en_US.UTF-8 |sudo locale-gen
    DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
    Generating locales (this might take a while)...
    en_US.UTF-8... done
    zh_CN.UTF-8... done
    Generation complete.

3.
update-locale LC_ALL= "zh_CN.UTF-8"

$ cat `/etc/default/locale`
#  File generated by update-locale
LANG=zh_CN.UTF-8
LANGUAGE="zh_CN:zh"

4.
export LANG=zh_CN.UTF-8

################################################################################
Configuring Locales
The Easy Way

Install debconf (i.e. run apt-get update then apt-get install debconf, as root)
Run dpkg-reconfigure locales as root

The Hard Way

Edit /etc/locale.gen as root. If /etc/locale.gen does not exist, create it. An example /etc/locale.gen is below.
Run /usr/sbin/locale-gen as root

A sample /etc/locale.gen

This file lists locales that you wish to have built. You can find a list

of valid supported locales at /usr/share/i18n/SUPPORTED. Other

combinations are possible, but may not be well tested. If you change

this file, you need to rerun locale-gen.

#

XXX GENERATED XXX

#

NOTE!!! If you change this file by hand, and want to continue

maintaining manually, remove the above line. Otherwise, use the command

"dpkg-reconfigure locales" to manipulate this file. You can manually

change this file without affecting the use of debconf, however, since it

does read in your changes.

en_US.UTF-8 UTF-8

######
查看所有的locale语言
# locale -a
# locale -a|grep en

■ 查看当前操作系统使用的语言

# echo $LANG

■ 设置系统locale语言为中文环境(永久生效)

vi /etc/sysconfig/i18n

LANG="zh_CN.UTF-8"

■ 设置系统locale语言为英文环境(永久生效)

LANG="en_US.UTF-8"

■ 临时改变系统locale语言(退出本次登录立即失效)

# export LANG=zh_CN.UTF-8

■ 安装中文字体

# yum install fonts-chinese.noarch

■ 指定中文字体路径

vi /etc/X11/fs/config

catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,

       /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
       /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
       /usr/X11R6/lib/X11/fonts/Type1,
       /usr/share/fonts/default/Type1,
       ,
       /usr/share/fonts/zh_CN/TrueType,
       /usr/share/fonts/zh_TW/TrueType

方法2

修改CentOS运行环境的默认语言环境变量值

[root@www ~]# vi /etc/profile

找到export语句,在语句前面加入

LANG=”en_US.UTF-8″

再在export后面追加LANG

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC LANG

保存配置,修改CentOS语言完成。

`