项目中有这样一个应用:
原来已经做好的项目中,在报表的展示页面需要把数据表中的数据保存成EXCEL,最开始的方案是把后台生成的数据通过POI包写到EXCEL中。后来采用了通过使用JAVA.NET.URL来得到输出报表数据的流,虽然流是HTML格式的,但是在保存成附件时只要把扩展名写成“XLS”就能用EXCEL打开,这样的方式中,可以不用操心使用POI时数据表的布局,而且展示出来的EXCEL很好看,效果和HTML上的差不多。
现在的问题是:String urls=request.getParameter("urls");
urls=new String(urls.getBytes("iso-8859-1"),"GBK");//转码,否则是乱码
// urls的值应该是:"http://192.168.1.69/test/servlet/showTable?unit=月";
URL u = new URL(urls);
URLConnection connection = u.openConnection();这段代码在WINDOWS平台下的TOMCAT执行的好好的,但是在LINUX平台下就出现问题了,unit参数值始终是乱码,进行了很多种转换都不行。
希望各位能帮着出出主意。

解决方案 »

  1.   

    用URL encode decode互转试一下看.
      

  2.   

    1 那个连接不要用 "http://192.168.1.69/test/servlet/showTable?unit=月";
    String url = "http://192.168.1.69/test/servlet/showTable?unit=月"; 
    url = URLEncoder.encode(str,"GBK"); // 这里用GBK转码然后显示连接,不要把连接写成明文的中文
    <a href="<%=url%>"><%=url%></a>2 在你的程序里
    request.setCharacterEncoding("GBK");
    String url = request.getParameter("url");
    // 这样就可以拿到
    3 其中的GBK,请根据你网站的编码类型修改4 你在URl里面读取数据的时候,一定要再次指定编码,比如
    URL url = new URL(page);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "GBK")); // 这里要再次编码才行