PDA

View Full Version : [SOLVED] 做第一个来问问题的...


tobyzhou
02-11-07, 10:40 PM
环境:server:win2K server
IE 6.0
Domino Server:5.0.x
问题描述:
我在表单中利用XMLHttpRequest向服务器的一个代理发送一个请求,就是运行这个代理,方法是:
http://server/dbname/agentName?OpenAgent&gh=12345
服务器上的代理接收到URL传递过来的工号后,去另外一个数据库中找到用户的姓名,部门等信息,返回.返回方法为:
print |Content-Type:text/html|
print |<xml>|
print |<name>|
print |用户姓名|
print |</name>|
print |<dept>|
print |用户所在部门|
print |</dept>|
print |</xml>|
IE浏览器接收到返回的数据后,得到的中文是乱码,如果是英文,就没有任何问题.
如果我没有print |Content-Type:text/html|这句,返回的内容就是包含在<html><body>.....</body></html>这样的标记中,这对解析会造成很大的影响,但不会有乱码问题.
请问哪位知道有什么方法可以解决这个乱码问题?

骏之城
02-11-07, 11:08 PM
print默认返回的content type就是text/html的。你这里是想返回xml所以content type应该是text/xml.

另外xml的第1行,应该为<?xml version="1.0" encoding="gb2312"?> 你可以先把xml的格式在本地试好了,再写到代理中。

恋猪明
04-11-07, 11:46 PM
关心中。。。

Jerry.C
05-11-07, 08:24 AM
支持!支持

wxfwbg_Notes
05-11-07, 09:37 AM
這個版塊開得非常好,我強烈支持

tobyzhou
05-11-07, 02:45 PM
不好意思,最近有点忙,一直没来看看。
TO:骏之城
按你的方法试了,也不行的,返回的还是乱码
你可以自己试试看。

骏之城
05-11-07, 02:56 PM
这是从我正常运行的代理中copy出来的一段,你覆盖到你的代理中试试。 Print "Content-Type: text/xml"
Print |<?xml version="1.0" encoding="gb2312"?>|
。。。
Print "<jobtitle> <![CDATA["+varJobTitle(0)+"]]> </jobtitle>"

如果不行,你在浏览器所在客户端上新建一个xml文件,encoding=gb2312,看能否在IE上正常显示中文,会不会是字符集的问题。

tobyzhou
06-11-07, 09:15 AM
版主还是厉害啊......
问题终于解决了,是我的错误.
我的格式:
print |Content-Type:text/xml|
print |<xml>|
print |<searchresult>|
print |<name>测试</name>|
print |</searchresult>
print |</xml>|
这样的话,定义encoding就出问题了,把最后一句print |</xml>|删除,再将第一句改为print |<?xml version = "1.0" encoding="gb2312"?>|就可以了,这个是我个人对XML文档的认识不深造成的,以后要多向各位学习......
仍然存在的问题点:
用JS的alert弹出responseText内容,显示的中文仍然为乱码,但用JS访问XML的节点取到值用alert显示时,已经不是乱码了.
希望上面的问题能给大家以后的工作节省点时间,大家有问题多讨论下,把这个版块火起来.

骏之城
06-11-07, 11:17 PM
我想是因为responseText也有字符编码,而那个字符编码刚好不支持中文,所以才出现这个问题的吧。而XML因为指定了字符编码,所以解析时正常。

Jerry.C
07-11-07, 09:32 AM
用utf-8吧