`
xitong
  • 浏览: 6203434 次
文章分类
社区版块
存档分类
最新评论

常见字符编码精解

阅读更多

曾几何时,多次研究过字符编码的问题,每次都是了解到大部分,以至于出现新的编码问题时还不得不去重新寻找资料。在这里我重新完整的整理一遍,简明扼要,分享出来也方便日后查看。

1.常见的字符编码,按照轻到重介绍

1-1.ASCII

最基本的编码,西文字符集的国际标准,有7位(128标准字符)和8位(128标准字符+128扩充字符)两种。

1-2.GB2312

GB开头的都是国标码,也就是中国制定的编码。简体中文字符集,2字节(16位)存储,7000多个简体汉字字符。

1-3.GBK

GB2312的扩展,完全兼容GB2312多加了繁体字2字节(16位)存储,20000多个汉字字符。

1-4.GB18030

GBK的扩展,良好兼容GBKGB2312多加了少数名族文字,变长编码,有124字节的。

1-5.ISO-8859-1

国际标准化组织制定的,又称Latin-1或西欧语言,当然还有ISO-8859-2Latin-2或叫中欧语言)。。。。。。单字节(8位),不支持中文。这下知道为什 eclipseproperties文件默认ISO-8859-1不能保存中文了吧,都要设置成GBK或者UTF-8才行。

1-6.ANSI

这个最诡异了,不同国家和地区编码有不同标准,在英文操作系统下代表ASCII,在简体中文操作系统下代表GB2312,在日文操作系统下代表JIS。。。。。。可 以理解为本地编码,或者严格来说不算是编码,是个代号。存储单元嘛当然是变动的了,理解为指向某种编码的指针也可以。

1-7.UNICODE

这个编码是真正的实现了世界字符的一统。固定长度4字节,在某个国际标准下,某个国际标准是2字节),世界上每一种字符都对应着一个Unicode编码。弊端也显而易 见,存储单字节的英文浪费空间,效率不高。有时候我们看到一些编辑器转码后产生\ua2b3\u43ab就是转换成Unicode的方式表示,\u是声明16进制的意思,后面跟 416进制的数,如a2b3。做web国际化时候这个没少解除吧。

1-8.UTF-8

简单说,就是为了解决UNICODE的弊端出现了可变长度的UTF-8

2.各种操作系统默认编码

先声明,部分操作系统是可以更改系统编码的,如Linux。这里列举的是最常规的情况。

Linux------UTF-8(你喜欢装中文版自己面壁去)

P-Windows3.2和苹果OS就是以GB2312为基本汉字编码

Windows95/98以及以上则以GBK为基本汉字编码,记得cmd下使用mysql必须执行的setnamesgbk

3.关于回车换行(\r\n

这个还是挺让人疑惑的。

\r代表回车,就是把光标移动到行首

\n代表换行,就是光标移动到下一行

也许你钻牛角尖,换行不就行了,为什么还要回车?早起的OS很傻,你要是换行不回车,光标往下移动一行,但是不会置于行首。这个OS主要就是指WINDOWS,所以 WINDOWS里面这个传统延续到今天。当然,不同的OS有不同的表现,有映象看过一份材料,如果你要真正“换行”,如下:

WINDOWS--------\r\n(回车换行)

LINUX--------------\n(只有换行,没有回车)

MACOSX---------\r(只有回车,没有换行)

MACOSX应该不叫IOS吧?高手指点咯

以上细微区别在用vim处理文本的时候要特别小心,尤其是使用了正则表达式。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics