您好,欢迎访问一九零五行业门户网

java web乱码解决方法

设置文件的保存编码格式,这个一般在新建项目时,设置了gbk的编码格式,这时文件的页面编码格式是gbk的,而保存格式是ansi的,后来把项目及文件的编码格式改为utf-8的编码格式后,依然出现中文乱码,这就是因为已经存在的文件的保存编码格式还是ansi把致,所以要把以前的.java文件的保存格式更改为utf-8,才不会出现中文注释乱码问题
window-preferences-general-content types 在text下选择对应的文件类型再改页面编码为utf-8然后点update就可以了。
注:
如果是一个全新的工作空间,设置myeclipse的编码格式,就等于设置了项目,文件及其保存的编码格式了(不包含jsp等文件)
如果是一个已经存在的工作间,而原来的编码格式为gbk,那么更改工作空间的编码,则相当于设置了项目,文件的编码格式,但是对于以前已经存在的.java文件,其保存编码是改变不了的,必须按上面(4)去更改,但是对于将要新建的文件的保存编码是有作用的
乱码要检查的几个地方
1.保存的编码
2.jsp里声明的编码(utf-8和utf8是一样的)
注意:
<%@ page language="java" contenttype="text/html; charset=utf-8"pageencoding="utf-8"%>
3.过滤器里处理的字符编码,仅限于输入的输出的数据编码。而上面那句代码中设的编码格式是页面的显示格式。
一份javaweb的项目代码中,总共有这几种格式:
1.代码的保存格式2.浏览器的解析格式3.数据输入时的格式(也就是浏览器的解析格式决定)4.数据处理时的格式。
原则上以上六种格式都要一样,就绝对不会乱码,但有一些特殊情况,其中有一些不一致,显示也会正确,如不需要将输入的内容进行显示和处理时request和respose的格式可以与其他的格式不一致,ps:常用编码iso-8859-1,gbk,utf-8
因此万无一失的办法如下:
jsp里的声明语句可以弄掉四种格式,而剩下的两种格式可以用监听器的方法解决:
新建一个监听器
package com.helloweenvsfei.filter; import java.io.ioexception; import javax.servlet.filter;import javax.servlet.filterchain;import javax.servlet.filterconfig;import javax.servlet.servletexception;import javax.servlet.servletrequest;import javax.servlet.servletresponse; public class characterencodingfilter implements filter{ private string characterencoding; private boolean enabled; public void destroy() { // todo auto-generated method stub characterencoding = null; } public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception { // todo auto-generated method stub if(enabled || characterencoding != null){ request.setcharacterencoding(characterencoding); response.setcharacterencoding(characterencoding); } chain.dofilter(request, response); } public void init(filterconfig config) throws servletexception { // todo auto-generated method stub characterencoding = config.getinitparameter("characterencoding"); enabled = "true".equalsignorecase(config.getinitparameter("enabled").trim()); } }
web.xml
<filter> <filter-name>characterencodingfilter</filter-name> <filter-class>com.helloweenvsfei.filter.characterencodingfilter</filter-class> <init-param> <param-name>characterencoding</param-name> <param-value>utf8</param-value> </init-param> <init-param> <param-name>enabled</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterencodingfilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
更多java知识请关注java基础教程栏目。
以上就是java web乱码解决方法的详细内容。
其它类似信息

推荐信息