中国开发网: 论坛: 程序员情感CBD: 贴子 273060
pcplayer
关于 ASP.net 中汉字繁体和检体(Big5 和 GB)的问题
关于 ASP.net 中汉字繁体和检体(Big5 和 GB)的问题

1. IIS / MSSQL 服务器都是 WIN2K 检体中文版的情况
1.1. aspx 页面上放GB汉字,在检体WIN2K上浏览没问题。在繁体WINDOWS上浏览没测试。
1.2. 由 asp.net 页面上输入的文字写进数据库,然后再从数据库取出文字显示到页面上(用asp.net的Label控件或TextBox控件)
1.2.1. 在检体WIN2K上输入/显示,没问题。检体WIN2K上输入的文字,到繁体WIN2K上浏览,能够正确显示;
1.2.2. 在繁体WIN2K上输入/显示,没问题。繁体WIN2K上输入的文字,到检体WIN2K上浏览,能够正确显示。并且几次输入,每次输入的繁体和检体汉字,能够同时正常显示出来。
1.2.3. 以上现象,可以解释为 asp.net 默认是用 utf-8 (Unicode)的缘故。

2. IIS / MSSQL 服务器都是繁体版本的WINDOWS,具体版本未知(可能是WINDOWS 2003)
2.1. 做静态 HTML 页,内容是 GB 编码,在检体WIN2K上可以正确显示;
2.2. 在 aspx 页内写的静态的 GB 编码的文字,通过asp.net后,出来的页面上的文字乱码。这时候查看浏览器的当前文字编码是Unicode,强制将浏览器的编码改为GB2312 或 Big5 都不能正确显示,仍然是乱码。
2.3. 用工具将包含有GB2312编码汉字的aspx文件转换为Big5格式,在检体中文WIN2K上用普通文本工具打开来看,汉字是乱码。放到服务器上,然后在检体WIN2K上用浏览器浏览,能够看到正确的汉字。也就是说,aspx 页里的静态文字,必须是Big5,才能让检体WIN2K的浏览器正确显示。原来以为aspx页里的文字是GB,至少可以让检体WIN2K上能够正确浏览。看来有可能是 asp.net 的服务器将aspx页面内的文字按照服务器的内码设置,将文字转换为了Unicode。如果是Big5编码的文字,能够正常转换;如果是GB的汉字,则转换出来的东东不管在Unicode下还是在GB / big5 下看到都是乱码,因为服务器是把它当Big5编码来转换的。
2.4. 在检体WIN2K上浏览aspx页,在上面输入文字后提交,然后到后台数据库直接查看内容,发现提交的汉字是检体,一部分汉字出现乱码。在页面上显示提交的这部分汉字(页面是asp.net程序从数据库里取出汉字内容后用 Label 来显示),看到的也是有一部分汉字乱码。
2.3. 在繁体WIN2K上打开ASPX页,在上面输入文字提交,再浏览输入的文字,能够正常显示;并且,繁体WIN2K上输入的文字,到检体WIN2K上去浏览,也能正确显示,没有乱码。

4. 根据 1.2 和 2.4 的对照,对于输入进数据库的汉字,两种服务器给出的行为不一样,有点奇怪。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录