常用字符编码规范 locale命令设置系统编码 iconv命令转换​编码

2017-03-13 23:25:00
admin
原创 2295
摘要:常用字符编码规范 locale命令设置系统编码 iconv命令转换​编码

一、常用字符编码规范

GB2312:最早的国家文字编码标准,包括一级字库和二级字库,一级字库包含2312个汉字,都是最常用的汉字;GB2312包含的文字大约有5000多个,据说是以涵盖《毛主席语录》所有汉字为标准。


GBK:在GB2312的基础上再加入许多汉字,可以说基本包含现代汉语的所有文字。

CP936:微软定义代码页code page的概念,可以理解CP936=GBK。


GB18030:最新出台的国家标准,向下兼容GBK和GB2312,中国政府强制执行的标准,所有在中国上市的操作系统都必须支持此编码。这个编码不仅包含简体和繁体汉字,还包含日韩文字和少数民族文字。


UTF8:Unicode是国际标准,是为统一世界上无数的编码而设计的,UTF8便是其中最通用的一种编码方式。


二、字符编码详细说明

1、CP,Code Point,Unicode编码范围的一个整数值;

2、汉字CP范围4E00-9FFF,半角全角CP范围FF00-FFEF;

3、Character.UnicodeBlock.of(char|cp)用于判断字符的编码子集;

4、BMP,Basic Multilingual Plane,Unicode前面的65536个码点;

5、Surrogate,代理是一种BMP码点,分配给UTF16用来表示非BMP码点,两个代理表示一个字符;

6、UTF8使用最短形式的编码值表示一个Unicode字符,编码值前面补充零可以生成非最短编码,就是non-shortest form;

7、只有部分解析器支持非最短编码,另外非最短编码存在安全隐患,比如识别URL路径分隔符出错;


三、locale命令设置系统编码

查看当前编码:locale

LANG=zh_CN.UTF-8

LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8


查看支持编码:locale -a | grep CN
bo_CN
bo_CN.utf8
ug_CN
ug_CN.utf8
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8


设置系统编码:

export LANG="zh_CN.UTF-8"

export LANG="zh_CN.GB18030"


四、iconv命令转换编码

列出编码:iconv -l

转换编码:iconv -f GBK -t UTF-8 in.txt -o out.txt

发表评论
评论通过审核之后才会显示。