我的项目是ssh,有两个jsp是utf-8的,其他都是gbk的,但是经理让我把他们都统一为gbk的,因为项目到了别的机子上就乱码,后来我把那两个utf-8的内容拷出来,再新建一个名字一样编码为gbk的jsp,把内容拷回去,结果那两个页面获取的数据在action的时候就成乱码了,但是变回utf-8就没事了。。写了过滤器也不行。。 下面那个过滤器我用一个新的例子测过,是有效的,用在我的项目上就不见效果
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
准备上班了,没解决问题郁闷
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
准备上班了,没解决问题郁闷
解决方案 »
- 关于Java
- java.io.IOException: File too large 异常
- 关于session的问题
- 请知道的人帮解答关于shark的以下问题
- 这样的培训机构,你见过吗?
- 很菜的问题.Apache有什么用???
- 求助]高手们,帮小弟看看啊,我这个JavaMail可以发邮件,但附件怎么收不到啊?
- struts使用validator验证Integer类型的发生的问题
- 5天学会J2EE,就是不知道Servlet是怎么回事?
- 我在执行如下方法时竟出现执行两次的情况,导致表的键值违反唯一约束。实在搞不明白了,大家看一下
- dtree里面的字段根据状态不同变化颜色怎么实现
- MyEclipse哪个版本稳定~~
public class SetCharacterEncodingFilter implements Filter { protected FilterConfig filterConfig;
protected String encodingName;
protected boolean enable; public SetCharacterEncodingFilter() {
encodingName = "GBK";
enable = false;
} // 初始化
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
} // 每个请求设置
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GBK"); chain.doFilter(request, response); } public void destroy() {
}
}
上面这个也测试过,在新项目上有效,套用到那个项目的两个jsp就无效
如果后台转码后还是错的话 那说明中间就已经乱码了 在form提交前 js操作下内容应该就可以了
用encodeURIComponent编码后 在到后台转换 应该就可以了
是不是和action的编码环境有关系 我也只是猜测 等高手
我又不是经理,所以又不能决定用什么编码 等高手
这是js里面的用法,在ajax所在类里面用keyWord = URLEncoder.encode(keyWord,"utf-8");把你把传的keyWord转码一下,在js用decodeURIComponent(keyWord)得到这个传过来的参数;
用js的话我怎么获取值啊?
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
chain.doFilter(request, response); }
试试
说的是文件编码,不是头部声明的编码。
我以前遇到过这种问题,不过不知道和你的是否一样
<script type="text/javascript">
function go()
{
var myHref=encodeURI("index.jsp?china=中国人");
document.all.myAnchor.href=myHref; </script>action里面这样接收
request.getParameter("china").getBytes("ISO-8859-1"),"UTF-8";
怎么还有GBK的
全部统一。
你们经理很闲是吧。这都管
统一才是王道其他免谈。。
对于JS右键属性将编码改为UTF-8就可以了.
假如你用Dreamweaver来编辑JSP文件,打开原来的utf-8编好的两个文件,按如下步骤:菜单->修改->页面属性->标题/编码->编码=gbk->重新载入->确定,此时,如果jsp文件中的汉字没有出现乱码就保存,否则,先别保存,用记事本打开jsp文件,全选->复制,然后回到Dreamweaver,全选jsp文件内容并删除,保存,然后粘贴记事本中的内容,修改头内容编码格式为gbk,再保存就会以gbk编码存储在磁盘上,这时就会和别的gbk文件一样。
<!-- spring encoding -->
<filter>
<filter-name>charset-encoding-gbk</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charset-encoding-gbk</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>