日期:2014-05-20  浏览次数:20565 次

求对数据编码等方面最好的解释~


[size=14px]

对字符编码从来就没有搞清楚, 让人很恼火!

究竟何为字符集, 何为编码,

现实中的很好理解: 0-9为数字的字符集, 电话号码, 邮政编码, 为各种不同的编码,

映射到计算机中: 发现计算机中的字符集只有 0和1, 剩下的可以说都是编码,

甚至, ASCii码 又被进行编码的编码工作!!!!


有点绕, 看个例子, 希望有人能解释:
[/size]



XML code

<?xml version="1.0" encoding="UTF-8"?>

<Context>
    <!-- Default set of monitored resources -->
    <WatchedResource> 中文打上去了
    </WatchedResource>

</Context>






[size=14px]
上面是一段很简单的xml代码, 中间有几个中文字符, 出现的现象如下:

1. 原始编辑工具 editplus, 保存退出后, 用IE运行, 报错,

2. 用其他的工具打开, 如 DreamWeaver打开, 中文已经变成乱码, 将其删除, 再重打一遍保存,
然后用IE打开运行, 中文显示出来, 将所有都关闭, 再重新用IE打开, 运行正常,中文显示。

3.再将所有关闭, 用editPlus 打开, 中文显示正常,将中文删除, 重新打上,保存, 运行IE,中文现实正常,
用DreamWeaver打开, 将中文删除--保存--关闭, 再用editPlus打开,写入中文, 运行IE,报错- 再用DreamWeaver打开,中文已经变成乱码。

用MyEclipse替代DreamWeaver 一样的效果, 可能这个大家用的比较多!

中间的原理, 望懂的人解释!
[/size]





[size=14px]
我好像记得以前用MyEclipse 将一个html页面转换成jsp页面之后, 要写入中文保存, 报错, 吥让其保存, 也是编码方面的问题!~

希望有过类似经历的人说说, 我记吥清楚了!


看了那么多, 再绕回来,

我们在jsp页面中经常能看到 contentType="text/html; charset=GB18030" pageEncoding="gbk"


我们经常会问到的: charset代表什么, pageEncoding又代表着哪里!

还有一个问题就是: charset=“”字符集还是编码?。 好像是同一个! charset= pageEncoding=都能都能些同样的

还有一个问题就是: 字符集的范围说, 到底谁包括谁?。 既然说UTF-8 能表示所有的文字符号, 为何中文又会出现乱码?


还有一个问题就是: 网络传输的过程当中, 编码被转来转去, 我们怎样保证的最后拿到的还是那样的一个编码!





[/size]









------解决方案--------------------
编码格式也不是一句话两句话能说清楚的,拿 Unicode 字符集标准来说,光 Unicode 标准的正文部分就有 500 多页,
整个标准有 1000 多页,可以在 http://www.unicode.org/versions/Unicode5.1.0/ 这里下载所有的章节。

关于 ISO 8859,GB2312,GBK,GB18030,Unicode,UTF-8,UTF-16 的简介可以在中文维基百科或者互动百科上找到。

中文维基百科:http://zh.wikipedia.org/w/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh-cn
互动百科:http://www.hudong.com/

------解决方案--------------------
有兴趣的话,可以看看下面的这些帖子或许对于理解有所帮助:

http://topic.csdn.net/u/20080623/16/e0f44f00-eaf9-4d38-b325-a3cc443f2ec9.html

http://topic.csdn.net/u/20081009/09/e899898c-591f-4985-ae88-5972475708fb.html