看到笔记本上的关于这两个概念的比较,感觉这个知识点还是得记下来。


1.首先要说明ascii和ANSI的区别。

ascii的全称为:American Standard Code for Information Interchange

中文解释为:美国信息交换标准码。

ANSI的全称为:AMERICAN NATIONAL STANDARDS INSTITUTE

中文解释为:美国国家标准学会


2.接下来再说说ascii和ANSI的关系:

ascii是一套电脑编码系统,主要用来显示现代英语和其他西欧语言。ascii是由ANSI制定的标准,开始是美国国家标准,现在已经被国际标准化组织(ISO)定为了国际标准。


3.现在来说说ANSI和unicode的区别:

ANSI:一般在工程或者是文本软件里默认的都是指定ANSI编码,就是说我们这个工程或者是文本软件用的编码系统是多字节的(标准ascii或者基础ascii码仍然是一个字节的,可以理解ANSI编码是兼容ascii编码的)。在ANSI标准下的就有很多国家和地区的用于本地的不同的字符集编码了。由此产生了 GB2312、GBK、Big5、Shift_JIS 等各自的编码标准。所以在选择ANSI字符集的情况下还要看你的计算机系统里具体安装的是哪一种字符集(如果是中文系统,则是GBK或者GB2312。如果是繁体中文系统,则是Big5。如果是日文操作系统,则有可能安装的是Shift_JIS )。所以即使你在中文系统下用ANSI编码写的文档,保存后再在日文系统下显示的还是乱码。因为比如文件里的汉字“字”在GBK编码中是0x12,0x34.在日文Shift_JIS 编码下,这两个字节有可能都没有被用上,或者是用上了也是指定的一个日文字符,也有可能Shift_JIS 编码是4个字节表示一个日文字符。所以ANSI编码在各个国家和地区的不同操作系统上是不兼容的。

Unicode:首先unicode字符集编码是唯一的,就是123456这个数字代表的字符是固定的,不会因为哪个国家没有这个字符而改变它。字符集编码唯一了,那么接下来就是在计算机中内存的存储编码了。unicode字符集编码的编码有unicode编码(就是2个字节的表示unicode字符集编码的数字大小,没有对其进行特殊的编码),UTF-8(比如“字”在unicode的字符集码表中的数字是123456,那么用UTF-8规定的前缀编码方式对这个数字进行编码,用来存储在内存中),UTF-16,UTF-32等等。所以用了UTF-XX之后解码要先把内存中的多个字节先按照UTF-XX的规则解码成一个代表一个字符的数字,再根据这个数字来取得真正的字符。所以要分清楚unicode编码和UTF-XX的编码的联系和区别。

注意:1.UTF-8是和ascii编码兼容的,所以一般的英文字符UTF-8和ascii编码都是一个字节存储在内存中。

大端字节(big-endian)和小端字节(little-endian))。

Unicode Transformation Format)是一种针对unicode字符集的码值的编码,是一种转换格式,是一种中间格式。这种转换格式的编码计算机中用到的很多,大多数都是为了节省存储空间,或者是利于数据传输而定的。如(U+4E25表示汉字“严”)”严“的unicode码值是4E25,则把4E25进行UTF-8编码成另一个多字节的二进数,最后的这个二进制数就是”严“的UTF-8编码了,也就是计算机内存里面存储的值。所以现在一般提到的UTF-8,UTF-16,UTF-32等等,都是针对unicode的码值的编码。