1、最近一次升级时,系统部分功能采用ajax 技术。linux, window, solaris9 下支持GBK 编码,没有问题。但在hpux 下出现了一个比较奇怪的错误。
hpunix 下的字符集支持 gb18300, zh_CN.hp15CN 但和GBK 兼容性有点问题(错码,缺码)。并且数据库使用的是zhsgbk 编码。为了最少的改动系统。将系统的类库使用iso8859-1 编译后,jsp 文件去掉 <@page contenttype 头,系统运行基本稳定。 但是在ajax 下主要取得数据总是有乱码。 在window.open 时显示是对的。 下载下来后,字节完全相同。猜测是Microsoft.XMLHTTP 和浏览器的处理方式不同。
通过java 写了个测试程序。
得到的输出如下
ISO8859-1 下
HTTP/1.0 200 OK
Server: Resin/2.1.16
Cache-Control: no-cache
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Set-Cookie: JSESSIONID=aLpTk5jxrqN9; path=/
Content-Type: text/html
Content-Length: 14
Date: Fri, 06 Apr 2007 10:20:16 GMT
11(测试)(自科)
GBK 系统下
HTTP/1.0 200 OK
Server: Resin/2.1.16
Cache-Control: no-cache
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Set-Cookie: JSESSIONID=akbSVv45sIza; path=/
Content-Type: text/html;charset=GBK
Content-Length: 8
Date: Fri, 13 Apr 2007 10:01:19 GMT
11(测试)
通过 jsp 文件中设置
<%
response.addHeader("Content-Type","text/html;charset=GBK");
%>
解决了此问题。 由此可以看出, Microsoft.XMLHTTP 处理字符时是使用 Content-Type; charset 中的内容。