A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钱智慧 中级黑马   /  2012-3-4 23:53  /  2178 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

总是听说java采用的编码是Unicode码表,现在也没弄明白这是什么意思,毕老师在讲字符编码的时候曾说“中间其实走了Unicode”,但老师并未详细讲,老师说的是什么意思呢?对于编码,之前看过方老师的Web视频,我是这样理解的,以什么码表写就当你什么码表读,我们经常讨论的也就是几种编码:ISO8859-1,UTF-8,GB2312(GBK),所谓的Unicode到底是如何体现的?请高人指教

评分

参与人数 1技术分 +1 收起 理由
admin + 1 有问题,黑马一下。

查看全部评分

3 个回复

倒序浏览
这样跟你讲吧!比如说字母‘a’ 的编码在unicode中是用97表示的


而所有的编码系统加起来有差不多几百种,比如说有的编码给‘a’指定的是86,有的指定的'56'


这样就会出现问题了吧,java为了解决想这样的问题,就采用了unicode编码系统,给每一个字符制定了唯一的数值

这样的话,就在任何语言,平台,程序中都可以安心使用了吧!
回复 使用道具 举报
黑马肖凯骏 发表于 2012-3-5 00:26
这样跟你讲吧!比如说字母‘a’ 的编码在unicode中是用97表示的

您看看这段代码

  1. String msg="你好";
  2. byte[] bytes=msg.getBytes("iso8859-1");                       
  3. String msg2=new String(bytes,"UTF-8");
复制代码
首先将msg按照iso码表编码,并将来到的字节存入数组
然后按照u8解码,乱码是肯定的了,我的问题,整个过程中用到了Unicode码表么?怎么用的?
回复 使用道具 举报
在JAVA中字符只有一种形式存在那就是Unicode,JAVA虚拟机本身不常用任何编码方式直接使用它们在字符集中的编号,这是统一唯一的办法。JAVA在虚拟机内部字符统一使用Unicode表示并不是说JAVA虚拟机是采用Unicode编码。
例如你在程序中写到 char han='永';在内存相应的区域这个字符表示为0x6c38,反过来
char han=0x6c38  System.out.println(han)输出永,其实说明只要你正确读入了永那么在JVM内存表示的一定是
0x6c38,没有任何其他值能代表这个字
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马