我在页面上输入一个公司名,然后利用Ajax把公司的详细信息自动在表单对应的元素上显示出来.如果在服务器上返回的XML中没有包括中文,可以正常显示,否则就不能显示.比如:<enter><id>2</id><tradename>张三</tradename><tradetel>0755-12454545</tradetel></enter>不能显示.我的服务端代码为:public ActionForward getByEnterpriseName(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
String enterpriseInfo = "";
String companyName = request.getParameter("companyname");// 获取企业名称
Sysenterprise enterprise = sysenterpriseService
.getsysenterpriseFirmname(companyName);// 根据企业名称获取对应的企业信息
PrintWriter out = response.getWriter();
if (enterprise != null) {
enterpriseInfo = "<enter><id>" + enterprise.getEnterpriseid()
+ "</id><tradename>" + enterprise.getContacter()
+ "</tradename><tradetel>" + enterprise.getPhone()
+ "</tradetel></enter>";
response.setContentType("text/xml;charset=UTF-8");
System.out.println(enterpriseInfo);
out.println(enterpriseInfo);
}else{
System.out.println("not find");
}
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}不知各位对此有没有什么解决办法?有的话请帮下忙,谢谢了!
ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
try {
String enterpriseInfo = "";
String companyName = request.getParameter("companyname");// 获取企业名称
Sysenterprise enterprise = sysenterpriseService
.getsysenterpriseFirmname(companyName);// 根据企业名称获取对应的企业信息
PrintWriter out = response.getWriter();
if (enterprise != null) {
enterpriseInfo = "<enter><id>" + enterprise.getEnterpriseid()
+ "</id><tradename>" + enterprise.getContacter()
+ "</tradename><tradetel>" + enterprise.getPhone()
+ "</tradetel></enter>";
response.setContentType("text/xml;charset=UTF-8");
System.out.println(enterpriseInfo);
out.println(enterpriseInfo);
}else{
System.out.println("not find");
}
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}不知各位对此有没有什么解决办法?有的话请帮下忙,谢谢了!
你在servlet里response.setContentType( "text/xml;charset=UTF-8 ");
这里试试 GBK 或 GB2312还有
String companyName = request.getParameter( "companyname ");// 获取企业名称
类似于 companyName 的这几个字符串 在out.print之前都要重新编码
比如:
String companyName = request.getParameter( "companyname ").getBytes("8859_1");
这样应该就行了或者是这样的
byte b[]=enterpriseInfo.getBytes("gb2312");
enterpriseInfo=new String(b);小弟也被JSP的中文问题困惑了很久 希望这些能对LZ有所帮助
这句中的 "companyname " 是乱码所以在
Sysenterprise enterprise = sysenterpriseService.getsysenterpriseFirmname(companyName);
中 就会出错
String companyName = request.getParameter("companyname").getBytes( "8859_1 ");
试试看
<enter>
<id>1</id>
<tradename>张三</tradename>
<tradetel>0775-2978191</tradetel>
</enter>
但是在JS里面设置:
var result = xmlHttp.responseXML.getElementsByTagName("enter");//xmlHttp为XMLHttpRequest
document.getElementById("tradename").value=result[0].childNodes[1].firstChild.nodeValue;
document.getElementById("tradetel").value=result[0].childNodes[2].firstChild.nodeValue;
如果节点tradename的值是英文就可以得到值,并且在文本框中显示.
如果节点tradename的值是中文就不能在文本框中显示,不知道为什么?
我认为 xmlHttp.responseXML.getElementsByTagName( "enter ")
这里的enter 传过来的中文内容 是错的
试试看在这步 .getBytes( "gb2312 ") 一下
这样吗?好像还是不行哦
我的解决方法是:
在服务器端直接得到页面的HTML代码,
客户端直接用xmlHttp.responseText得到结果
document.getElementById("divResult").innerHTML = xmlHttp.responseText;
就可以了啊
谢谢各位!