黑马程序员技术交流社区
标题:
关于Unicode编码的疑问
[打印本页]
作者:
钱智慧
时间:
2012-3-4 23:53
标题:
关于Unicode编码的疑问
总是听说java采用的编码是Unicode码表,现在也没弄明白这是什么意思,毕老师在讲字符编码的时候曾说“中间其实走了Unicode”,但老师并未详细讲,老师说的是什么意思呢?对于编码,之前看过方老师的Web视频,我是这样理解的,以什么码表写就当你什么码表读,我们经常讨论的也就是几种编码:ISO8859-1,UTF-8,GB2312(GBK),所谓的Unicode到底是如何体现的?请高人指教
作者:
黑马肖凯骏
时间:
2012-3-5 00:26
这样跟你讲吧!比如说字母‘a’ 的编码在unicode中是用97表示的
而所有的编码系统加起来有差不多几百种,比如说有的编码给‘a’指定的是86,有的指定的'56'
这样就会出现问题了吧,java为了解决想这样的问题,就采用了unicode编码系统,给每一个字符制定了唯一的数值
这样的话,就在任何语言,平台,程序中都可以安心使用了吧!
作者:
钱智慧
时间:
2012-3-5 11:40
黑马肖凯骏 发表于 2012-3-5 00:26
这样跟你讲吧!比如说字母‘a’ 的编码在unicode中是用97表示的
您看看这段代码
String msg="你好";
byte[] bytes=msg.getBytes("iso8859-1");
String msg2=new String(bytes,"UTF-8");
复制代码
首先将msg按照iso码表编码,并将来到的字节存入数组
然后按照u8解码,乱码是肯定的了,我的问题,整个过程中用到了Unicode码表么?怎么用的?
作者:
马胜平
时间:
2012-3-5 11:56
在JAVA中字符只有一种形式存在那就是Unicode,JAVA虚拟机本身不常用任何编码方式直接使用它们在字符集中的编号,这是统一唯一的办法。JAVA在虚拟机内部字符统一使用Unicode表示并不是说JAVA虚拟机是采用Unicode编码。
例如你在程序中写到 char han='永';在内存相应的区域这个字符表示为0x6c38,反过来
char han=0x6c38 System.out.println(han)输出永,其实说明只要你正确读入了永那么在JVM内存表示的一定是
0x6c38,没有任何其他值能代表这个字
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2