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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Stephen_Chow 于 2013-10-30 10:41 编辑

在《《毕向东Java基础视频教程-day21-07-字符编码》》这个视频里的一个疑问,如图,吧“你好”编码成{-60 -29 -70 -61}。然后用ISO8859-1解码。  因为在ISO8859-1是一个字节代表一个字符。
然后又都没有查到对应的字符,所以就返回位置字符{? ? ? ?},为了解决解码出错的问题,采用在编回去,在解码的方式。但问题出来了。

你那{? ? ? ?}去查ISO859-1的编码,? 代表位置字符,所以他怎么会返回原来的{-60 -29 -70 -61}呢?他应该返回四个一样的,就不能是元数据了。结果却是可以的。

接着老师又将ISO8859-1换成了UTF-8 结果如图二所示。这是的?却不能还原了,老师的解释是:简单的一句话,UTF-8也能识别中文,ISO却不能。
但是我很不理解,我认为应该都不能还原,求解释,么么哒


1111.png (55.06 KB, 下载次数: 46)

图一

图一

22222.png (67.41 KB, 下载次数: 56)

图二

图二

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
【转】这种情况是这样的,ISO-8859-1 字符集的编码范围是 0000-00FF,正好和一个字节的编码范围相对应。这种特性保证了使用 ISO-8859-1 进行编码和解码可以保持编码数值“不变”。虽然中文字符在经过网络传输时,被错误地“拆”成了两个欧洲字符,但由于输出时也是用 ISO-8859-1,结果被“拆”开的中文字的两半又被合并在一起,从而又刚好组成了一个正确的汉字。
回复 使用道具 举报
三国里面的关羽也会编码?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马