我们常说汉字的"内码"与"外码"样。内码是汉字在计算机内部存储,处理和传输360问答用的信息编码。它必须与ASCII码兼容但又不能冲突。所以把国阳李促汉深还号搞收标码两个字节的最高位置'1',以区别于西文究州此屋候,这就是内码。汉字的输入码称为"外码"。输入码即指我们输入汉字时使用的编码。常见的外码分为数字编码(如区位码),拼音编码和字形编码(如五笔)。再说区位码,"啊"的区位码是1601,写成16进制是0x10,0x01。这和计算机广泛使用的ASCII编码冲突。为了兼容00-7f的ASCII流模副二兵编码,我们在区位码的高、低字节上分别加上A0。这样"啊"的编码就成为B0A1。我们将加过两个A0的编码也称为GB2312编码,虽然GB2312的原文根本没提到这一点。内码是指操作系统内部的字符编码。早期操作系度苗况念星实息比察执统的内码是与语言相关的.现在的Windows在内部统一使用Unicode,然后用代威码页适应各种语言,"内码"的概念就比较模糊了。我们一般将缺省代码页指定的编码说成是内码。内码这个词汇,并没有什么官方的定义。代码页也只是微软的一种习惯叫法。作为程序员,我们只要知道它们是项王劳备什么东西,没有必要过多地考证这些名词。所谓代码页(codepage)就是针对一种语言文字的字符编码。例如GBK的codepage是CP前线下害丰美936,BIG5的codepage是CP950,GB2312的co道你脚压管镇白depage是CP2烟处威肥弱修心左0936。Windows中有缺省代码页的概念,即缺省用什么编码来解释字符。例如Windows的记事本打开了一个文本文件,里面的内容是字节流:BA、BA、D7、D6。Windows应该去怎么解释它呢?是按照Unicode编码解释、还是按照GBK解释、还是按照BIG5解释,还是按照ISO8859-1去解释?如果短科也按GBK去解释,就会得到"汉字"两个字。按照其它编码解释,可能找不到对应的字符,也可能找到错误的字符。所谓"错误"是指与文本作者的本意不符,这时村序领责己使重就产生了乱码。答案是Windows按照当前的缺省代码页去解释文本文件里的字节流。缺省代码页可以通过控制面板的区域选项设置。记事本的另存为中有一项ANSI,其实就是按照缺省代码页的编码方法脸父院学龙府保存。Windows的内码是Unicode,它在技术上可以同时支持多个代码页。只要文件能说明自己使用什么编码,始号照谁送耐形用户又安装了对应的代码页,Windows就能正确显示,例如在HTML文证府晶在走同支声件中就可以指定charset斯件罗技六续整愿买害急。有的HTML文件作者,特别是英文作者,认为世界上所有人都使用英文,在文件中不指定charset。如果他使用了0x80-0xff之间的字符,中文声异奏Windows又按照缺省的GBK去解释,就会出现乱码。这时只要在这个html文件中加上指定charset的语句,例如:<metahttp-equiv="Content-Type"content="text/html;charset=ISO8859-1">如果原投作者使用的代码页和ISO8859-1兼容,就不会出现乱码了进一步的参考资料"ShortoverviewofISO-IEC10646andUnicode"(http://www.***.se/i18n/ucs/unicode-iso10646-oview.html)
标签:外码,来自