欢迎来到天天文库
浏览记录
ID:29495422
大小:87.40 KB
页数:10页
时间:2018-12-20
《全面分析java相关的编码问题》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、全面分析Java相关的编码问题全面分析Java相关的"编码"问题2010-10-1418:47全面分析Java相关的"编码"问题关键字:Java、GBK、UTF-8、UNICODE、编码、字符集、乱码、JSP本文说明Java程序员遇到的一个很头痛的问题就是编码问题。一旦开发与系统平台及网络相关的程序而需要传输中文字符时,若不能正确掌握编码的知识,将频频出现乱码问题而扰乱开发计划。目前已经存在大量的关于编码问题的讲解。个人觉得这些文档主要是教"怎样解决目前问题"而非"为什么有这个问题"。希望本文能够帮助
2、读者从根本上了解编码原理,以及软件开发过程中出现乱码的原因,而非仅仅是解决某个具体问题。字符集与编码标准字符集UNICODE从概念上讲,字符集并不完全等同与编码标准,这两个概念的区别很模糊。(未经过文献证实,只是以掌握的知识这么认为)。大家都清楚Java使用的是UNICODE字符集。请注意这里使用的是"字符集"关键字。下面以UNICODE为例浅谈字符集与编码标准。UNICODE是一套字符集而非编码标准。UNICODE字符集并非一直不变,目前流行使用的版本是使用2个字节来存储理论数量为256x256=6
3、5535(个)的字符集。两个字节能表示的范围也就是这个数字,以16进制表示就是0x0000-0xFFFF。这65535(个)已经足够收录目前世界上主要语言的大多数字符了,保证日常通信是没问题的。最新的UNICODE标准已经可以支持几百万个字符了,当然随之而来的则是一个字符占用的字节数将更大。在目前使用的JRE版本中,一个中文字符是使用两个字节的内存空间来存储的。在Java中测试UNICODE的相关功能是非常容易的:首先是查看一个中文字符的UNICODE编码值(特别注意,这里指的是字符集中一个字符所代表
4、的数字,它是存放在内存中的)。运行如下代码将可以得到:charch1='汉';int全面分析Java相关的编码问题全面分析Java相关的"编码"问题2010-10-1418:47全面分析Java相关的"编码"问题关键字:Java、GBK、UTF-8、UNICODE、编码、字符集、乱码、JSP本文说明Java程序员遇到的一个很头痛的问题就是编码问题。一旦开发与系统平台及网络相关的程序而需要传输中文字符时,若不能正确掌握编码的知识,将频频出现乱码问题而扰乱开发计划。目前已经存在大量的关于编码问题的讲解。个
5、人觉得这些文档主要是教"怎样解决目前问题"而非"为什么有这个问题"。希望本文能够帮助读者从根本上了解编码原理,以及软件开发过程中出现乱码的原因,而非仅仅是解决某个具体问题。字符集与编码标准字符集UNICODE从概念上讲,字符集并不完全等同与编码标准,这两个概念的区别很模糊。(未经过文献证实,只是以掌握的知识这么认为)。大家都清楚Java使用的是UNICODE字符集。请注意这里使用的是"字符集"关键字。下面以UNICODE为例浅谈字符集与编码标准。UNICODE是一套字符集而非编码标准。UNICODE字
6、符集并非一直不变,目前流行使用的版本是使用2个字节来存储理论数量为256x256=65535(个)的字符集。两个字节能表示的范围也就是这个数字,以16进制表示就是0x0000-0xFFFF。这65535(个)已经足够收录目前世界上主要语言的大多数字符了,保证日常通信是没问题的。最新的UNICODE标准已经可以支持几百万个字符了,当然随之而来的则是一个字符占用的字节数将更大。在目前使用的JRE版本中,一个中文字符是使用两个字节的内存空间来存储的。在Java中测试UNICODE的相关功能是非常容易的:首先
7、是查看一个中文字符的UNICODE编码值(特别注意,这里指的是字符集中一个字符所代表的数字,它是存放在内存中的)。运行如下代码将可以得到:charch1='汉';intnch1=(int)ch1;System.out.println("汉:"+Integer.toHexString(nch1));运行结果为:汉:6c49。也就是说"汉"这个字符在内存中实际上是占用了两个字节的空间,一个字节存放的是"6C"而另一个字节存放的是"49"。这个十六进制数"0x6c49"所代表的数字则是在UNICODE字符集
8、标准中"汉"这个字对应的数字值。Java中提供了对"转码"相当好的支持,使用的时候也非常方便。请运行下面的代码:Stringstr="u6c49";System.out.println("6C49--"+str);运行结果:6C49--汉。"U"是将十六进制数转化成字符的转义字符。它只对它后面紧跟上的四个字符起作用。比如说:('a'的UNICODE数字编码是61)Stringstr="u61";//这句代码是通不过编译的,"u后面至少要4位十六进
此文档下载收益归作者所有