日期:2014-05-17  浏览次数:20794 次

Servlet 中文乱码问题
本帖最后由 u013156418 于 2014-01-14 16:14:22 编辑
我在servlet调用另一个类,获取这个类返回的字符串,然后传给前台,但是现在遇到了中文乱码问题,不知道该怎么解决,代码片段如下:请问为什么在doPost里面就乱码了呢?是我哪个地方写错了?请教各位,谢谢了!

    public static void main(String[] args){
       //这地方是用来测试的,测试结果是中文英文都不会乱码
test("E:/Software/Tomcat7.0/webapps/WebForJavaScript/Folder/stumess.xml");
}

public static void test(String filePath){
ConvertXmlToJson toJson=new ConvertXmlToJson();
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++");
System.out.println(toJson.getXMLString(filePath)); //打印ConvertXmlToJson类的getXMLString()方法返回的字符串
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletExceptionIOException {

request.setCharacterEncoding("UTF-8"); //设置编码格式
response.setCharacterEncoding("UTF-8");
//response.setContentType("text/html;charset=utf-8");

        //为什么这个地方打印出来的是乱码(中文乱码)?
test("E:/Software/Tomcat7.0/webapps/WebForJavaScript/Folder/stumess.xml");


------解决方案--------------------
public  String getXMLString(String filePath) {		//获取xml字符串
FileInputStream inputStream=null;
InputStreamReader inputStreamReader=null;
try {
inputStream = new FileInputStream(filePath); //文件字节流
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();

try {
inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();


StringBuffer buffer = new StringBuffer();

BufferedReader br = null;
String line;
try {
br = new BufferedReader(inputStreamReader);
while (true) {
line = br.readLine();
if (line == null){
break;
}
buffer.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return buffe