博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASCII、ANSI、Unicode及UTF-8编码
阅读量:4213 次
发布时间:2019-05-26

本文共 988 字,大约阅读时间需要 3 分钟。

ASCII和Ansi编码

字符内码:指的是用来代表字符的内码.读者在输入和存储文档时都要使用内码,

内码分为:

单字节内码 -- Single-Byte character sets (SBCS),可以支持256个字符编码.

双字节内码 -- Double-Byte character sets)(DBCS),可以支持65000个字符编码.
前者即为ASCII编码,后者对应ANSI.
至于简体中文编码GB2312,实际上它是ANSI的一个代码页936

Unicode

 ANSI有很多代码页,使用不同代码页的内码无法在其他代码也正常显示,这就是为什么日文版/繁体中文版游戏无法在简体中文平台直接显示的原因.
    Unicode也是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案.它是一种2字节编码,能够提供65536个字符,这个数字是不够表示所有的字符的(汉语就有55000多字符),所以,通过一个代理对的机制来实现附加的917476个字符表示,以达到所有字符都具有唯一编码.

Unicode和BigEndianUnicode 区别

    这两者只是存储顺序不同,如"A"的unicode编码为65 00 ,BigEndianUnicode编码为00 65

UTF-8

    这是为传输而设计的编码,其系列还有UTF-7和UTF-16
    其中UTF-16和Unicode编码大致一样, UTF-8就是以8位为单元对Unicode进行编码。从Unicode到UTF-8的编码方式如下:
     Unicode编码(16进制)      UTF-8 字节流(二进制)
     0000 - 007F         0xxxxxxx
     0080 - 07FF         110xxxxx 10xxxxxx
     0800 - FFFF         1110xxxx 10xxxxxx 10xxxxxx

  例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110110001 001001,用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。

转载地址:http://obumi.baihongyu.com/

你可能感兴趣的文章
RAC 安装patch 后启动实例 报错 ORA-00439 feature not enabled- Real Application Clusters 解决方法
查看>>
On RAC, expdp Removes the Service Name [ID 1269319.1]
查看>>
Important Changes to Oracle Database Patch Sets Starting With 11.2.0.2 [ID 1189783.1]
查看>>
Oracle RAC 平台下 Patch 安装与卸载 步骤
查看>>
Oracle Database 11gR1 和 10gR2 ASM Best Practices 说明文档
查看>>
ASM Concepts Quick Overview [ID 1086199.1]
查看>>
PowerDesigner 业务处理模型( BPM ) 说明
查看>>
PowerDesigner 企业架构模型 ( EAM ) 说明
查看>>
PowerDesigner 正向工程 和 逆向工程 说明
查看>>
PowerDesigner 模型文档 说明
查看>>
PowerDesigner 系列 小结
查看>>
Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
查看>>
Oracle sessions,processes 和 transactions 参数 关系 说明
查看>>
RMAN 备份报错 RMAN-06207 RMAN-06208 解决方法
查看>>
[INS-35172] Target database memory (XXMB) exceeds the systems available shared memory ({0}MB) 解决方法
查看>>
深入理解 OUI(Oracle Universal Installer)
查看>>
ORA-00600:[32695], [hash aggregation can't be done] 解决方法
查看>>
Oracle SQL中使用正则表达式 执行报ORA-07445 [_intel_fast_memcpy.A()+10] 错误
查看>>
Oracle TABLE ACCESS BY INDEX ROWID 说明
查看>>
ORA-00600 [kmgs_parameter_update_timeout_1], [27072] ORA-27072 解决方法
查看>>