常见的几种编码方式

Nodepad++相信大家都有用过,格式那一栏有ANSI格式编码,UTF-8格式编码,UTF-8无BOM格式编码,UCS-2 Big Endian以及UCS-2 Little Endian,这些其实就是我们常说的编码方式。你可能会想问为什么没有ASCII,Unicode,UTF-16呢,因为你肯定在写程序的时候用过,后面我们会说到这种可以说是广为流传的误区吧。

以上提到的Notepad++中出现的,被称之为格式编码。那么什么是编码呢,图片的jpg,视屏的AVI都是编码方式,我们可以猜到这里面涉及到存储的概念,转换的概念。那么我们今天所讨论的编码可以看做是字符的编码,同样会涉及到存储和转换的内容。所谓的存储就是,每个字符用几个字节来表示以及是大头方式还是小头方式,转换就是将该字符映射成为对应的数字,毕竟计算机只能理解0,1代码,即高低电平。

下面我们分别看一下我们经常遇到的几种情况。

ASCII应该是最熟悉的,使用了8位的二进制来表示英文的字母和字符,比如0x20表示空格;0x30表示数字0;0x61表示字母a等等。当然最开始的时候最高位全是0,后来扩展后的ASCII使用到了最高位为1的情况。

ANSI是在ASCII的8位用尽的情况下,出现的一种解决方案。我大汉民族常用汉字6000+,所有的字符好几万,那就用16位表示;我们还有55个兄弟姐妹呢,那就用32 位表示。我理解的ANSI就是一个统称,在我们中文环境就是GB2312,在日本人的环境就是相应的日本人制定的编码。

ANSI编码虽然解决了ASCII长度不足的问题,但是不同的ANSI编码不能够兼容。我们知道网络的发展极大地促进了各国之间的交流,而这种不兼容的情况是不能忍的。于是催生出了Unicode。

准确的说Unicode并不是一种编码方式,它是一个字符集,包括了全世界绝大多数文明的字符,而且还在不断的发展之中,毕竟人类的创造力是无限的。Unicode定义了字符到数字的映射关系。比如字符“中”对应的数字十六进制为4E2D。UNICODE并没有规定要用用多少个字节表示字符,因为这是编码的范畴,字符集并不管。

UTF-8 (Unicode Transformation Format)就是Unicode的一种实现。作为一种编码方式,我们前面提到过。其表示采用变长字节进行存储,比如英文字符就是用一个字节就行,对于汉字使用3个字节,按需使用。对于转换,我们知道Uincode定义了数字跟相应字符的映射,比如“中”Unicode为4E2D,UTF-8编码为E4B8AD。怎么转化为3个字节的形式就是UTF-8的具体实现,可以去查一下。

虽然有了UTF-8,但有些强迫症患者看着这种不规则存储实在是心里难受,所以同时也制定了UTF-16,常用的字符都用16位表示,这样看着就舒心多了。当然不常用的字符使用32位来表示。UTF-16BOM表示的是字节序,与后面所述的大小头是一个意思。这里面用于网络传输。

UCS-2是Universal Character Set缩写,其和UTF-16基本一样,就是只是用16位表示字符,当然其支持字符集就不如UTF-16广泛了。至于大小头方式,举个例子字符“中”Unicode为4E2D,使用UCS-2 Big Endian表示为4E 2D,使用UCS-2Little Endian表示为2D 4E。大小头用于实际的存储。

每一种编码方式都会有其历史背景以及优缺点,就不一一讲述了。以上就是我对几种常见的编码格式等的理解,如有错误,请指正。

时间: 2024-10-09 13:24:33

常见的几种编码方式的相关文章

Oracle常见的几种登录方式

1.运行SQLPLUS工具 C:\Users\csb>sqlplus(回车) (输入账户)system(回车) (输入密码) (回车) 2.直接进入SQLPLUS命令提示符 C:\Users\csb>sqlplus/nolog(回车) 3.以OS身份连接 C:\Users\csb>sqlplus / as sysdba(回车) 或者 C:\Users\csb>sqlplus(回车) (输入账户)system(回车) (输入密码) (回车) SQL>connect / as s

Redis常见的几种使用方式及其优缺点

本文主要针对Redis常见的几种使用方式及其优缺点展开分析. 一.常见使用方式 Redis的几种常见使用方式包括: Redis单副本: Redis多副本(主从): Redis Sentinel(哨兵): Redis Cluster: Redis自研. 二.各种使用方式的优缺点 1.Redis单副本 Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景. 优点: 架构简单,部署方便: 高性价比:缓存使用时无

php网站常见的几种攻击方式(转)

针对 PHP 的网站主要存在下面几种攻击方式::1.命令注入(Command Injection)2.eval 注入(Eval Injection)3.客户端脚本攻击(Script Insertion)4.跨网站脚本攻击(Cross Site Scripting, XSS)5.SQL 注入攻击(SQL injection)6.跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)7.Session 会话劫持(Session Hijacking)8.Sessio

常见的几种编码(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)介绍

转载:http://blog.jobbole.com/30526/ 编码一直是让新手头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚.但是编码又是那么重要,特别在网页这一块.如果你打出来的不是乱码,而网页中出现了乱码,绝大部分原因就出在了编码上了.此外除了乱码之外,还会出现一些其他问题(例如:IE6 的 CSS 加载问题)等等.我写本文的目的,就是要彻底解释清楚这个编码问题!如果你遇到了类似的问题,那就要仔细的看看

[转]企业网站首页设计常见的6种布局方式

在群里和大家交流时,看到太多的网页设计师发布企业站的个人作品,设计中总是摆脱不了大框套小框的设计布局思路,不加思索的跳入单一的网页布局形式中,于是就有了把企业站常用的页面布局方式总结一下的想法,让大家包括我自己全面的了解一下企业站的常见布局方式,做到对此种类型的网站布局心中有数,跳出狭隘.单一的设计思路,于是就有了这篇文章.很多人常常询问某个页面该如何布局这样的问题,其实网页布局也没有想象中那么难,只要做到两点我认为起码可以做到临阵不慌,一是对常见的布局方式心中有数,二是根据信息内容及设计素材的

【协议分析】HTTP响应头中的2种编码方式介绍

HTTP 1.1中有两个实体头(Entity-Header)直接与编码相关,分别为Content-Encoding和Transfer-Encoding.    先说Content-Encoding, 该头表示实体已经采用了的编码方式.Content-Encoding是请求URL对应实体(Entity)本身的一部分.比如请求URL为 http://host/image.png.gz时,可能会得到的Content-Encoding为gzip.Content-Encoding的值是不区分大小写的,目前

几种编码方式

UTF-16是Unicode字符编码五层次模型的第三层,字符编码表(Character Encoding Form,)的一种实现方式.即把Unicode的字符集的抽象码位 映射为16位长的整数(即码元)的序列,用于数据存储或传递.Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示. UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法兼容于ASCII编码. Unicode(统一码.万国码.单一码)是计算机科学领

js 跨域问题常见的五种解决方式

一.什么是跨域? 要理解跨域问题,就先理解好概念.跨域问题是由于javascript语言安全限制中的同源策略造成的. 简单来说,同源策略是指一段脚本只能读取来自同一来源的窗口和文档的属性,这里的同一来源指的是主机名.协议和端口号的组合. URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件

企业网站首页设计常见的6种布局方式

看到太多的网页设计师发布企业站的个人作品,设计中总是摆脱不了大框套小框的设计布局思路,不加思索的跳入单一的网页布局形式中,于是就有了把企业站常用的页面布局方式总结一下的想法,让大家包括我自己全面的了解一下企业站的常见布局方式,做到对此种类型的网站布局心中有数,跳出狭隘.单一的设计思路,于是就有了这篇文章.很多人常常询问某个页面该如何布局这样的问题,其实网页布局也没有想象中那么难,只要做到两点我认为起码可以做到临阵不慌,一是对常见的布局方式心中有数,二是根据信息内容及设计素材的特点进行摆积木式的多