常用字符编码规范 locale命令设置系统编码 iconv命令转换编码
- 2017-03-13 23:25:00
- admin
- 原创 2311
一、常用字符编码规范
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