如何通过UTF-8内码把汉字提取出来

如何通过UTF-8内码把汉字提取出来,第1张

如果是JS,可以试试这样

alert(decodeURI('%E8%85%BE'));

就是说将UTF8编码每两位为一组,前面加%,然后用decodeURI或decodeURIComponent方法解码,就可还原为所对应的汉字

或者直接写成函数:

function u8decode(code){

return decodeURI(codereplace(/([A-F0-9]{2})/gi,'%$1'));

}

1、内码是指计算机汉字系统中使用的二进制字符编码,是沟通输入、输出与系统平台之间的交换码,通过内码可以达到通用和高效率传输文本的目的。如ASCII。

2、外码是相对于内码而言的辞汇。在计算机科学及相关领域中,外码指的是“外在的‘经过学习之后,可直接了解的编码形式(例如:文字或语音符号)’”。

中文输入法对汉字的编码即属外码。常见的中文外码有仓颉码、行列码、大易码、呒虾米码、注音码、拼音码。

3、交换码是指用于交换文件所使用的编码。对于计算机而言,不同的系统有可能使用不同的内码。但如果不同系统间要交换文件,则会发生乱码现象。解决方法则为,在交换文件前,文件提供者先将由内码形式储存的文件转换成交换码形式再做交换。在接收文件后,文件接收者再由交换码转成内码。

4、字形码,点阵代码的一种。为了将汉字在显示器或打印机上输出,把汉字按图形符号设计成点阵图,就得到了相应的点阵代码(字形码)。用于显示的字库叫显示字库。显示一个汉字一般采用16×16点阵或24×24点阵或48×48点阵。已知汉字点阵的大小,可以计算出存储一个汉字所需占用的字节空间。

5、汉字机内码,又称“汉字ASCII码”,简称“内码”,指计算机内部存储,处理加工和传输汉字时所用的由0和1符号组成的代码。输入码被接受后就由汉字 *** 作系统的“输入码转换模块”转换为机内码,与所采用的键盘输入法无关。机内码是汉字最基本的编码,不管是什么汉字系统和汉字输入方法,输入的汉字外码到机器内部都要转换成机内码,才能被存储和进行各种处理。

参考资料来源:百度百科-汉字机内码

参考资料来源:百度百科-内码

参考资料来源:百度百科-外码

参考资料来源:百度百科-交换码

参考资料来源:百度百科-字形码

西文字符由于数量较少(通常不超过128个),所以采用1个字节(8位)就能完成对所有的西文字符的编码,ASCⅡ码规定西文字符的编码只使用字节的低7位(从第1位到第7位),最高位设为0。所以ASCⅡ码的编码范围是十进制数0~127(写成十六进制即00H~7FH)。

汉字的个数远比西

文字符多,国家标准规定的最常用和较常用的汉字便近8000个。显然,如果象西文字符那样采用1个字节对汉字编码就不够了。所以国家标准规定,每个汉字的编码都采用2个字节表示。汉字国标码的一个特点是,尽可能与西文字符的ASCⅡ码相一致。所以汉字国标码的每个字节都只采用其最低7位(从第1位到第7位)。最高位仍然取0。

汉字国标码的取值范围是十进制数33~126(写成十六进制即21H~7EH)。

举例来说,“天”字国标码的两个字节分别是76、108(十进制),写成十六进制是4CH,6CH,写成二进制便是01001100B,01101100B:

“天”的国标码:

0100110001101100

第2字节第1字节

汉字国标码作为一种国家标准,是所有汉字编码都必须遵循的一个共同标准,但由于国标码每个字节的最高位都是0,这正好与ASCⅡ码相冲突。例如“天”字的国标码是76、108,而西文字符“L”和“l”的ASCⅡ码也恰好是76和108,现在假如内存中有两个字节76、108,这到底是一个汉字“天”呢,还是两个西文字符“L”和“l”?都有可能,这就出现了二义性。显然国标码在计算机内部是不可能直接使用的,必须对其进行某种变换后才可以使用。其变换方法便是将国标码双字节的每个字节都加上128,相当于将国标码每个字节的最高位即第8位都由0变成1,其余7位不变。这种经过变换的国标码就是汉字的机内码。显然汉字机内码的每个字节都大于128,这就与西文字符的ASCⅡ码区分开了(ASCⅡ码都小于128)。

例如,上面举的汉字“天”的国标码是76、108,将国标码的每个字节都加128,就得到其机内码204、236(均是十进制),写成十六进制就是CCH、ECH,写成二进制便是11001100B、11101100B。

每个字节的第8位都由0变成了1,其余位不变。

“天”的机内码:

1100110011101100

第2字节第1字节

通过以上分析可看出,汉字国标码在两个字节中占用7位,而汉字机内码在每个字节中的8位全占用了。在计算机内部实际采用都是机内码而不是国标码。

-------------------

故,

原国标码以十六进制表示为758D H

75 H>0111 0101 B>高位置1>1111 0101 B> F5 H

8D H>1000 1101 B>高位置1>1000 1101 B> 8D H

所以,该汉字的机内码为F58D H。

以上就是关于如何通过UTF-8内码把汉字提取出来全部的内容,包括:如何通过UTF-8内码把汉字提取出来、什么是汉字的内码、外码、交换码、字形码、已知一个汉字的图标码是7580D.求它的十六进制汉字内码。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9336523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存