汉字编码与ASCII编码有何区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汉字编码与ASCII编码有何区别相关的知识,希望对你有一定的参考价值。

汉字编码与ASCII编码有何区别?详细点

通常汉字用的是unicode码,在windows sdk中是BSTR _bstr_t等数据类型,对于一个unicode字符,转换成acsii 下的char类型需要占两个字符。二者之间可以用下面的方法转换:
char *p; _bstr_t v;

ascii->unicode: (v->p) p = _com_util::ConvertBSTRToString(v);
unicode->ascii: (p->v) v = _com_util::ConvertStringToBSTR(p);
eg:"中"相应的unicode码为D6D0
一个汉字是两个字节组成的,每个字节可以看成一个ASCII编码。
参考技术A ASCII码占一个字节,汉字不是用ASCII码编码的,一般有GBK2312和UTF-8等编码方式,他们都占2个字节。 参考技术B 对于汉字的机内码,和ASCII原理上完全相同,没有任何区别。

当然汉字除了机内码,还有输入码,因为键盘上没有汉字,必须用以串键盘上的符号来表示,比如拼音、五笔等。

ASCII编码和Unicode编码

ASCII编码和Unicode编码
 
ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
 
字母A用ASCII编码是十进制的65,二进制的01000001;
 
字符0用ASCII编码是十进制的48,二进制的00110000,注意字符‘0‘和整数0是不同的;
 
汉字中已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。
 
你可以猜测,如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001。
 
新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
 
所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间;

以上是关于汉字编码与ASCII编码有何区别的主要内容,如果未能解决你的问题,请参考以下文章

unicode字符集与utf-8编码的区别,unicode转中文工具中文转unicode工具(汉字)

delphi 编码与汉字转换问题

汉字编码 (GB2312 GBK GB18030)

PYTHON 之 字符编码的区别与介绍

如何实现UTF-8 Unicode Ansi 汉字编码转换

unicode 和utf-8编码