修改前的代码如下:
public static void historyBack(HttpServletResponse response,String v){
try{
String exportString="<script>alert('"+getString(v)+"');history.back();</script>";
System.out.println("v is :"+getString(v));
System.out.println("getString(v)is :"+getString(v));
byte[] temp = exportString.getBytes();
String comm = new String(temp,"iso-8859-1");
//response.setContentType("text/html");
//response.setHeader("Content-disposition","attachment;filename=download.xls");
PrintWriter out = response.getWriter();
out.print(comm);
out.close();
}catch(Exception e){
return;
}
}
部分代码修改如下:
public static void historyBack(HttpServletResponse response,String v){
try{
// 修改 2006--07-18
response.setCharacterEncoding("GBK");
String strV = getString(v);
System.out.println("V historyBack is :"+v);
//String exportString="<script>alert('"+getString(v)+"');history.back();</script>";
String exportString="<script>alert('"+v+"');history.back();</script>";
System.out.println("v is :"+getString(v));
System.out.println("getString(v)is :"+getString(v));
byte[] temp = exportString.getBytes();
// 修改 2006--07-18
// String comm = new String(temp,"iso-8859-1");
String comm = new String(temp,"GBK");
//response.setContentType("text/html");
// response.setHeader("Content-disposition", "attachment;filename=download.xls");
PrintWriter out = response.getWriter();
out.print(comm);
out.close();
}catch(Exception e){
return;
}
}
在这个代码当中只所以会出现JavaScript提示框为乱码,主要原因是在java的输出流当中。采用了iso-8859-1编码。这对java程序没有问题,如果没有在java程序中嵌入JavaScript提示框,可以才有iso-8859-1和GBK编码,但是对JavaScript程序却不行,必须用GBK编码。这是由于Java和Javascript采用的编码机制不同造成的。
还有就是这里在处理请求和响应的数据之前,对请求和响应流进行了编码转换。可以解决编码转换问题。
// 修改 2006--07-18
response.setCharacterEncoding("GBK");
//String strV = getString(v);
System.out.println("V historyBack is :"+v);
2006-7- 18