问题描述
帮朋友改以前一个论坛(在mvnforum上面二次开发出来的),要求是对论坛里面的帖子进行搜索,然后将搜索出来的帖子以及帖子里面的附件打包下载下来1. 我的做法是将搜索出来的结果生成一个静态的html页面,然后与附件一起压缩成ZIP,然后下载。由于java.util.zip会产生中文的乱码,所以我用的是org.apache.tools.zip。(生成静态页面与生成ZIP都是在一个JSP里面)2. 在本地是一切正常的,TOMCAT里面设置了URIEncoding="UTF-8",生成出来的静态页面和ZIP文件里面中文全部正确3. 但是当我发布到服务器上面的时候,发现生成出来的静态页面里面全部是"???",ZIP压缩文件里面的中文文件名也全部都是问号,服务器的TOMCAT与本地是一样的,也设置了URIEncoding,唯一不同就是服务器是英文的操作系统,不知道这个有没有什么影响?折腾了三天了,重装TOMCAT多次,但是仍然这样,我感觉是编码问题,但是不知道改哪里,求诸位帮忙。。。 问题补充:恩,我觉得有道理我本地是中文的OS,在“区域和语言选项”里面的区域选项和高级里面选择的都是“中文(中国)”在服务里上面的“Regional Options”和“Advanced”里面现在选择的就是“Chinese(PRC)”需要怎么修改呢,还要装什么字符集什么的么?
解决方案
设置一下JVM的字符集试试
解决方案二:
感觉是输出流编码问题 ???? 通常是在系统找不到正确的编码 以?号显示
解决方案三:
java虚拟机的编码方式以系统默认的编码方式来编码,我原先是英文为默认的系统语言。改为中文后重启tomcat解决了
解决方案四:
我也有过乱码经历,或许对你有帮助我的 struts.xml 和 action 的java类都是UTF-8格式的 。 但是我从struts.xml 取出action 的变量时每每乱码。我是这样解决的:在 action 中对变量进行转码,new String(a.getBytes(),ISO8859-1);就是把我的变量从 UTF-8 转换成 ISO8859-1猜测: struts.xml 在拿到变量的时候进行了一次自动的编码转换(ISO8859-1 转换成 UTF-8), 所以当我传进去的字符串不是ISO8859-1的时候电脑傻了,所以输出来的东东都是带星星的。 也许你在转换的过程中也存在这样的一个文件,当你传进去的字符串的编码让它傻眼时,它也把你搞傻眼了。
解决方案五:
(生成静态页面与生成ZIP都是在一个JSP里面) --你jsp的编码正确么?还有就是jsp本身保存类型的编码是否正确。可以参考一下org.springframework.web.filter.CharacterEncodingFilter这个类的实现。
解决方案六:
打开控制面板,点击“Data, Time, Language , and Regional Options”,然后再点击“Regional and Language Options”,会弹出一个窗口,打开这个窗口的“Languages”选项卡,选中“Install files for East Asian languages(安装东亚语言支持)”,然后点击“Apply”。
解决方案七:
将服务器的编码 改为与本地一样的编码试一试。因为你的服务器的系统为英文 而本地测试有没有问题 很大的可能性是服务器的编码的问题。
解决方案八:
服务器 上默认的系统编码是什么呢? 是否和本地一样的!如果是linux:http://hi.baidu.com/wqj403/blog/item/b90b2537c73c7e380855a962.html这个帖子 可能解决你的问题
解决方案九:
生成出来的静态页面里面全部是乱码?你进入它的页面(首页面)是乱码吗?试着在自己的本机设置一下字符集看可以不可以,查看---->>编码.