+ -
当前位置:首页 → 问答吧 → servlet中从request获取xml文件的内容部分显示乱码

servlet中从request获取xml文件的内容部分显示乱码

时间:2011-04-20

来源:互联网

doPost()方法中的代码:
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
String line="";
StringBuffer buffer = new StringBuffer(1024);
while((line=br.readLine())!=null){
  buffer.append(line);
 }
System.out.println(buffer.toString());


显示内容:
xmlmsg=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F………………

应该显示的为:
xmlmsg=<?xml version="1.0" encoding="UTF-8"?>………………

乱码特点是,< = " 还有空格这些符号显示为乱码,其他字母都能正常显示

请大侠们拔刀相助!!

作者: huanghaihe2008   发布时间: 2011-04-20

这个不是乱码,是URL转义字符。
编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。下表中列出了一些URL特殊符号及编码
[十六进制值]
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F 
4. ? 分隔实际的 URL 和参数 %3F 
5. % 指定特殊字符 %25 
6. # 表示书签 %23 
7. & URL 中指定的参数间的分隔符 %26 
8. = URL 中指定参数的值 %3D


你的问题的解决办法,这样试试看:
在doPost()方法之前,用正则表达式匹配然后将其替换为对应的编码。

作者: ghldty   发布时间: 2011-04-20