All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET,2.0,Club,Web,Site,Starter,Kit,补丁_[Asp.Net教程]
.Net中使用GDI+提高gif图片画质的代码_.net资料_编程技术
SQL中CASE使用_mssql学习_编程技术
ASP.NET动态创建控件之绝境求生_[Asp.Net教程]
PHP解释器的代码高亮输出_[PHP教程]
SQLServer2005中的XML选项详解(2)_[SQL Server教程]
你可能已经知道或者不知道的ASP.NET,2.0技巧_[Asp.Net教程]
SEO该如何进行图片优化?_百度优化_seo学堂
asp.net得到HTML,meta标记的内容_[Asp.Net教程]
使用ASP.NET,Atlas编写显示真实进度的ProgressBar_[Asp.Net教程]
Reading number is top 10 pictures
The goddess of the single reason1
治疗多发性骨髓瘤的特效药,一万二一支
A letter to parents choose world of warcraft seven big reason
鸡蛋的新玩法
9.3阅兵全景图6-常规导弹梯队和核导弹梯队
青春清纯美女大集合4
西游四格漫画(三)
NeedWallpaper9
So beauty, will let you spray blood9
Exquisite decoration is not paying too much1
Download software ranking
Boxer Classic video1
Tram sex maniac 2 (H) rar bag11
Unix video tutorial11
Sora aoi 120 minutes
Unix video tutorial10
Unix video tutorial1
美女写真3
仙剑奇侠传98版歌曲
JSP+Ajax Web development typical examples
C#高级编程(第4版)
归海一刀 published in(发表于) 2014/3/30 5:19:25 Edit(编辑)
HTML语言:什么是Unicode?什么是UTF-8?_[Html教程]

HTML语言:什么是Unicode?什么是UTF-8?_[Html教程]

HTML语言:什么是Unicode?什么是UTF-8?_[Html教程]

一直在编码方面要求不是很高,所以对Unicode和UTF-8也不甚了解。


  最近偶然翻到一篇UTF-8的文章,感觉解释的非常繁杂,因此才想到重新写一篇简单易懂一点的。


  首先说明一下现在常用的一些编码方案:
  1、在中国,大陆最常用的就是GBK18030编码,除此之外还有GBK,GB2312,这几个编码的关系是这样的。


最早制定的汉字编码是GB2312,包括6763个汉字和682个其它符号
95年重新修订了编码,命名GBK1.0,共收录了21886个符号。
之后又推出了GBK18030编码,共收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字,现在WINDOWS平台必需要支持GBK18030编码。


按照GBK18030、GBK、GB2312的顺序,3种编码是向下兼容,同一个汉字在三个编码方案中是相同的编码。


  2、台湾,香港等地使用的是BIG5编码
  3、日本:SJIS编码


  如果把各种文字编码形容为各地的方言,那么Unicode就是世界各国合作开发的一种语言。
  在这种语言环境下,不会再有语言的编码冲突,在同屏下,可以显示任何语言的内容,这就是Unicode的最大好处。


  那么Unicode是如何编码的呢?其实非常简单。
  就是将世界上所有的文字用2个字节统一进行编码。可能你会问,2个字节最多能够表示65536个编码,够用吗?
  韩国和日本的大部分汉字都是从中国传播过去的,字型是完全一样的。
  比如:“文”字,GBK和SJIS中都是同一个汉字,只是编码不同而已。
  那样,像这样统一编码,2个字节就已经足够容纳世界上所有的语言的大部分文字了。


  Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。
  现在用的是UCS-2,即2个字节编码,而UCS-4是为了防止将来2个字节不够用才开发的。UCS-2也称为基本多文种平面。
  UCS-2转换到UCS-4只是简单的在前面加2个字节0。
  UCS-4则主要用于保存辅助平面,例如Unicode 4.0中的第二辅助平面
  20000-20FFF - 21000-21FFF - 22000-22FFF - 23000-23FFF - 24000-24FFF - 25000-25FFF -   26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF
  总共增加了16个辅助平面,由原先的65536个编码扩展至将近100万编码。


  那么既然统一了编码,如何兼容原先各国的文字编码呢?
  这个时候就需要codepage了。
  什么是codepage?codepage就是各国的文字编码和Unicode之间的映射表。
  比如简体中文和Unicode的映射表就是CP936,点这里查看官方的映射表。


  以下是几个常用的codepage,相应的修改上面的地址的数字即可。
codepage=936 简体中文GBK
codepage=950 繁体中文BIG5
codepage=437 美国/加拿大英语
codepage=932 日文
codepage=949 韩文
codepage=866 俄文
codepage=65001 unicode UFT-8


最后一个65001,据个人理解,应该只是一个虚拟的映射表,实际只是一个算法而已。


从936中随意取一行,例如:
0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH
前面的编码是GBK的编码,后面的是Unicode。
通过查这张表,就能简单的实现GBK和Unicode之间的转换。



  现在明白了Unicode,那么UTF-8又是什么呢?又为什么会出现UTF-8呢?


  ASCII转换成UCS-2,只是在编码前插入一个0x0。用这些编码,会包括一些控制符,比如 或 /,这在UNIX和一些C函数中,将会产生严重错误。因此可以肯定,UCS-2不适合作为Unicode的外部编码。


  因此,才诞生了UTF-8。那么UTF-8是如何编码的?又是如何解决UCS-2的问题呢?


例:
E4 BD A0        11100100 10111101 10100000
这是“你”字的UTF-8编码
4F 60          01001111 01100000
这是“你”的Unicode编码


按照UTF-8的编码规则,分解如下:xxxx0100 xx111101 xx100000
把除了x之外的数字拼接在一起,就变成“你”的Unicode编码了。
注意UTF-8的最前面3个1,表示整个UTF-8串是由3个字节构成的。
经过UTF-8编码之后,再也不会出现敏感字符了,因为最高位始终为1。


以下是Unicode和UTF-8之间的转换关系表:
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx


Unicode编码转换到UTF-8,简单的把Unicode字节流套到x中就变成UTF-8了。







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.