关于汉字编码

一次偶然的机会,使用PL/SQL Developer将编辑区的语句全选,粘贴到Word中保存后,当时没注意,后来发现,中文都变成乱码了
比如:出现了,搞不清楚当时是哪四个汉字了.
所以,对汉字编码进行了点探索.以便将汉字还原出来.

学生时代,在考试前填写一些报名表时,往往需要将姓名以区位码的方式铅笔填涂.当时由于好奇,也曾经对汉字编码进行过一点探索.
国标区位码表(GB2312-80),共设置94个区,每个区94个位.(所以称为区位码).一共7445个字符,其中汉字6763个.
第1-9区是符号部分,从16区开始是汉字部分,汉字部分按汉字是否常用分为上下两个区域,第16-55区是上半区域,汉字按拼音排序,共3755个,
第56-87区是下半区域,汉字按部首(笔画笔形)排序,共3008个.

比如,"荣"位于40区57位,所以区位码是4057,(2839 H)
国标码是指,区位码区码位码分别加上32(换成十六进制就是20H)并转换成十六进制的结果,"荣"的国标码是:4859 H
汉字内码是指,国标码高字节和低字节分别加上128(十六进制80H),也就是区位码高字节和低字节分别加上160(十六进制A0)."荣"的机器内码是:C8D9 H

可以使用Excel编公式,用函数CODE和CHAR来进行字符和内码的转换,比如:
=CODE("荣")的结果为: 51417  注: 51417=200*256+217, 200对应C8,217对应D9
=CHAR(51417)的结果为: 荣

现在回到这8个乱码上来,根据出现的这几个字符来核对,确认了一下,是被转换成拉丁字符(ISO Latin-1)了,知道了这点,问题就好办了.
按照拉丁字符对照表,得到: 178,187,205,172,201,232,214,195
从而得到四个汉字的内码: 45755,52652,51688,54979
从而得到四个汉字是:“不同设置”

另外,GBK编码是国标扩展编码之意,共收录汉字21003个(包含GB2312-80的6763个),这样使得姓名上面出现的罕见汉字,也可以输入计算机系统了。

 

请使用浏览器的分享功能分享到微信等