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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苏乞儿 中级黑马   /  2014-9-13 02:17  /  901 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

傻傻分不清楚,自己画了张图,分享一下。。。。

编码示意图.png (54.37 KB, 下载次数: 0)

编码示意图.png

3 个回复

倒序浏览
这个 转换 感觉没多大意义吧,什么类型编码 什么类型反编译就好了吧,感觉
回复 使用道具 举报
hushiliang 发表于 2014-9-13 08:30
这个 转换 感觉没多大意义吧,什么类型编码 什么类型反编译就好了吧,感觉 ...

确实这样,因为哪个编码造成的乱码,反转过去在转成自己需要的编码即可
回复 使用道具 举报
中文或者英文字符在计算屏幕上的显示是一个点阵,说白一点就是一个稍显简单的图形,
那么,我们在计算机之间传递中文或者英文字符时,是不是要将每一个像素的内容都传递过去,这样的话文本传输就会显得很庞大,一篇文章半小时都传不完。
所以,就将每一个字符都使用一组数字来表示,就像使用字典一样(假设每一页只有一个字符),发送者告诉接收者这个字符在字典的哪一页就可以了,接收者获得了页码,就去字典里面查找,这样就传输内容就极大的减少了
但是,这会有另外一个问题,发送者使用的新华字典,而接收者使用的是牛津大词典,同样页码上的字符就不一样了,所有就要求大家使用的字典一样
这里的字典就是指UTF-8,GBK,big-5,所以进行文本传输时一定要保证双方使用的字符集一致
String中有一个方法getBytes(charset),就是将字符串转化为字节码,就是在字典charset中的页码组合
  1. String name = "你好";
  2.                 byte[] bytes = name.getBytes(Charset.forName("UTF-8"));
  3.                 String name2 = new String(bytes, Charset.forName("UTF-16"));
  4.                 String name3 = new String(bytes, Charset.forName("UTF-8"));
  5.                 System.out.println(name2);
  6.                 System.out.println(name3);
复制代码
输出结果
  1. ??
  2. 你好
复制代码
可以看到我们使用UTF-8对“你好”进行编码,分别使用UTF-16和UTF-8解码,前一个出现乱码,只有后一个正确解码,所以只需要保证解码编码前后一致就不会出现乱码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马