Unicode和ASCII的区别是什么
ascii是一个字节,但是unicode可不一定就是两个字节. ascii只能表示英文数字和常用标点符号,编码在1-127之间.unicode可以表示所有字符,编码范围很大.ascii 能表示256个符号,低128个是英文 数字 标点 与一些不可显示字符高128个在不同的代码页上会表示不同的内容,就像繁体中文与简体中文一样,繁体中文的txt(ascii)在简体下打开就是乱码 unicode就不存在问题,因为能表是65000个字符,因此不会有重复字符发生unicode正在慢慢取代ascii ,windows 2000开始系统的核心就是unicode的
一个字符在内部表示成 unicode codepoint,对于单字节的字符来说,它就是 ASCII
码,对于多字节来说就很复杂的编码,它就是一个代码表,就像查字典,像我们以前的高考时填写的区位码,就是知道横纵坐标后就能查到值,这就是
unicode,但 unicode
本身是多字节支持的编码方案,由于多个字节在网络上传输或保存到磁盘上是按一个字节一个字节来保存的,这就存在先保存字节还是低字节的问题还有一个问题是
一直使用字节数来编码字符还是变长字节来编码字节(比如为了兼容性,单字节依然是一个字节保存,其它常见自然语言的字符用双字节,很少见的冷僻字用多字节
编码)这也需要让程序知道哪个字节是分隔点(哪几个字节凑在一起是一个字符),因此有多个编码成字节的方案,比如 UTF-8, UTF-16
之类的,UTF-8 就是变长字节方案,它们都是用一个方法来编码 unicode code point。
至于什么叫 UTF-8
(ASCII 编辑) 这可能你得自己试一下,编辑保存之后,用notepad 打开或 java FileInputStream
按字节读取来观察一下它与 Unicode 编辑有什么不同。Windows 上的 notepad 记事本本身只支持 ANSI,也就是 ASCII
编辑,就是说把内部编码直接当成 ASCII
字节,不对字节做任何转换编码处理,所以当两个汉字4个字节放在一起,我通过程序删除第2个字节的话,你会发现全成了乱码,因为程序会假设 1 + 3
凑在一起是一个汉字,最后一个4单独成一个汉字,所以都是错误的。而 UTF-8
之类的有一套编码规则,或许能推测出这个数据本身有错误,当通过网络传输时我们就能识别出传输过程中是否有错误发生。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!