MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 大家来讨论一下unicode和utf-8解决方案

大家来讨论一下unicode和utf-8解决方案(3)

www.MyException.Cn  网友分享于:2013-01-20  浏览:81次

http://tieba.baidu.com/f?kz=505769597
简单来说:
ASCII是7位(一个字节8位,剩下1位用以扩展)表示了128个字符。
而Unicode是用双字节(或更多——三个字节或四个字节)来编码(也叫宽字符吧),规定了其二进制编码格式,却未定义对应的字符存储实现方式。
UTF-8是得益于互联网的发展而强盛起来的。它是Unicode的实现方式之一(其他还有UTF-16、UTF-32)。“它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。”

ASCII和Unicode之间,还存在一个双字节字符集(DBCS:double-byte character set)——256代码的过渡,存在问题而导致了Unicode的发起与推广!!!

这是偶曾经一段读书笔记……
------解决方案--------------------
Unicode包含了世界上所有语言,是一种表示码,在使用的时候有着不同的实现形式,如UTF-8把其编码成不同的形式,至于为什么不直接编码,不太清楚,但Unicode 0x10FFFF的范围,应该用三个字节来表示才可以完整表示的。
第三个问题,应该采取的是默认编码吧。每个系统都有其默认的编码方式的。
------解决方案--------------------
unicode是一个字符集,utf-8是一种编码方式,也就是把unicode字符集变换成,1个或多个字节的一个换算关系。
一般要说unicode编码的话应该是那种最开始的那种编码方式,也是对unicode字符集进行编码的一种方式。
------解决方案--------------------
JAVA内部处理的统一为UNICODE
而C++则要明确指定ANSI(char)和UNICODE(wchar_t)

一个UNICODE编码为0x3D4F的字符,按照地址从左到右增大的顺序,在内存中存储映像为0x3D4F(大尾序,big endian),0x4F3D(小尾序,little endian).Intel的x86系列处理器只能处理小尾序(总线的线序),而摩托罗拉、IBM的处理器则为大尾序,ARM等嵌入式开发可自由设定字节顺序。操作系统方面,WINDOWS/LINUX为小尾序,苹果机MACINTOSH为大尾序。网络字节序也为大尾序。

UTF-8是UNICODE的一种常见实现方式。是一种变长的存储格式。UTF-16要区分LE/BE和带BOM方式。而我们一般用的WINDOW记事本默认为ANSI方式(EUC).




------解决方案--------------------
字符编码简介
ASCII码
从学计算机的那天开始,老师就告诉我们在计算机里面,所有的英文字母都对应到一个数字编码,这就是ASCII码(American Standard Code for Information Interchange)。ASCII码是很久很久以前(1968年)制定的。它只使用了一个8位字节中的低7位,总共是127个编码位。这样的方案很快就不够使用了。



单字节编码的发展
在80年代早期,一些现在流行的标准(如ISO 8859和Unicode)还未出现。那时为了支持多种地区的语言,各大组织机构或IT厂商开始发明它们自己的编码方案,以便弥补ASCII编码的不足。一时间,各种互不相容的字符编码方案成百花齐放之势。

为了避免混乱,ISO组织在1998年之后,陆续发表了一系列代号为8859的标准,作为ASCII编码的标准扩展,终于统一了单字节的西方字符的编码。ISO是设在瑞士的国际标准化组织的简称(International Organization for Standardization)。

ISO-8859-1(Latin1 - 西欧字符) 

ISO-8859-1覆盖了大多数西欧语言,包括:法国、西班牙、葡萄牙、意大利、荷兰、德国、丹麦、瑞典、挪威、芬兰、冰岛、爱尔兰、苏格兰、英格兰等,因而也涉及到了整个美洲大陆、澳大利亚和非洲很多国家的语言。

此外,ISO-8859-1后来被采纳为ISO-10646标准(后面会讲到)的首页,换句话说,Unicode的最开头256个字符编码和ISO-8859-1是一一对应的。正是由于这个特殊性,使很多人产生了对ISO-8859-1编码的误用。

 

 


ISO-8859标准还包括:

ISO-8859-2(Latin2 - 中、东欧字符) 
ISO-8859-3(Latin3 - 南欧字符) 
ISO-8859-4(Latin4 - 北欧字符) 
ISO-8859-5(Cyrillic - 斯拉夫语) 
ISO-8859-6(Arabic - 阿拉伯语) 
ISO-8859-7(Greek - 希腊语) 
ISO-8859-8(Hebrew - 希伯来语) 
ISO-8859-9(Latin5) 
ISO-8859-10(Latin6) 
ISO-8859-11(Thai - 泰国语) 
ISO-8859-12(保留) 
ISO-8859-13(Latin7) 
ISO-8859-14(Latin8) 
ISO-8859-15(Latin9) 
但是ISO 8859系列标准的字符编码,还是互不相容,不可能同时使用的。毕竟它们只是单字节的编码方案。而且,它们和多字节的编码方案如中文编码GB2312和BIG5也是不相容的。那些欧洲字符(最高位为1的字符),在GB2312和BIG5中被认为是双字节汉字编码的首字节。

多字节编码的发展
单字节编码只有256个码位(28=256),而中文字符何止千千万,单字节编码不可能满足中文编码的需要。于是为了适应东方文字信息处理的需要,ISO又制定了ISO 2022标准(Character code structure and extension techniques),提供了七位与八位编码字符集的扩充方法的标准。我国根据ISO 2022制定了国家标准GB2311 ——《信息交换用七位编码字符集的扩充方法》,并根据该标准制定了国家标准GB2312-80编码。其他东方国家和地区也制定了各自的字符编码标准,如日本的JIS0208,韩国的KSC5601,台湾地区的CNS11643等。

BIG5 

BIG5是从CNS11643的早期版本发展而来的,虽然没有包括CNS11643的全部内容,但却是目前台湾、香港地区普遍使用的一种繁体汉字的市场标准,包括440个符号,一级汉字5401个、二级汉字7652个,共计13060个汉字。

GB2312-80 

全称是《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。

· 双字节编码 

· A1-A9:符号区,包含682个符号 

· B0-F7:汉字区,包含6763个汉字 

GB2312码共收录6763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二级字3008,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。

GBK 

汉字内码扩展规范(GBK)是国家技术监督局1995年为中文Windows 95所制定的新的汉字内码规范。

· 双字节编码,GB2312-80的扩充,在码位上和GB2312-80兼容。 

· 范围:8140 ~ FEFE(剔除xx7F)共23940个码位。 

· 包含21003个汉字,包含了ISO 10646中的全部中日韩汉字,简、繁体字融于一库。 

文章评论

程序员的鄙视链
程序员的鄙视链
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
代码女神横空出世
代码女神横空出世
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我是如何打败拖延症的
我是如何打败拖延症的
中美印日四国程序员比较
中美印日四国程序员比较
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
旅行,写作,编程
旅行,写作,编程
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
漫画:程序员的工作
漫画:程序员的工作
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
我的丈夫是个程序员
我的丈夫是个程序员
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
编程语言是女人
编程语言是女人
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
每天工作4小时的程序员
每天工作4小时的程序员
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
鲜为人知的编程真相
鲜为人知的编程真相
10个调试和排错的小建议
10个调试和排错的小建议
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员和编码员之间的区别
程序员和编码员之间的区别
老程序员的下场
老程序员的下场
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
如何成为一名黑客
如何成为一名黑客
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
那些争议最大的编程观点
那些争议最大的编程观点
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
 程序员的样子
程序员的样子
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员必看的十大电影
程序员必看的十大电影
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
一个程序员的时间管理
一个程序员的时间管理
程序员应该关注的一些事儿
程序员应该关注的一些事儿
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有