1.jsp+servlet出现乱码问题:
在jsp中有表单提交,输入中文后在servlet中获取显示出现乱码:
a.首先检查开发工具的编码格式:
确定编码格式后,比如是UTF-8。在MyEclipse将编码统一,方法:windows-Preferences-Myeclipse Enterprise Workbench-Files and Editors-jsp 将Encoding中的选成UTF-8。
b.在jsp页面中设置:<%@ page pageEncoding="UTF-8" %>在head标签中加入<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
c.在servlet中获取内容时,在doGet或doPost方法中(看使用哪个方法,一般是在一个中调用另一个)加上request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");(这个方法不是太好,建议用过滤器)
d.使用过滤器,如下代码:
//这是个过滤类
public class EncodingFilter implements Filter{
private String charset = "UTF-8";//初始值为UTF-8
public void destroy() {
}
public void init(FilterConfig fc) throws ServletException {
charset = fc.getInitParameter("charset");//从配置文件中获得参数名为charset的值赋给charset
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//可以在类中直接设置,也可以在web.xml配置文件中的filter标签中设置<init-param><param-name>charset</param-name>
<param-value>UTF-8</param-value></init-param>然后在该类中引用就行,一般在配置文件中设置比较灵活
request.setCharacterEncoding(charset);
response.setCharacterEncoding(charset);
chain.doFilter(request, response);
}
}
在web.xml配置文件中引入过滤器类,<filter>
<filter-name>EncodingFilter</filter-name>//过滤器名称,这个随便起只要和mapping中的name一致就行
<filter-class>com.sjz.blog.util.EncodingFilter</filter-class>//类所在的包名加类名
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>//对根目录下的所有文件都进行过滤
</filter-mapping>
d.一般设置了上面的就差不多解决了,如果还不行的话,就在tomcat中conf文件夹下的server.xml配置文件中加入URIEncoding="UTF-8":<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>然后重新部署,刷新项目,一般保险起见最好先删除在加载。
2.数据库中出现乱码问题,大多数情况是在安装时没有设置好,如图设置编码,根据自己的需要设定。
3.使用fckeditor出现的中文乱码问题:
a.在fckeditor文件夹下有个fckconfig.js文件用EditorPlus或UltraEdit等编辑软件打开,将其保存为utf-8的编码格式。
b.将该文件中的FCKConfig.DefaultLanguage = 'zh-cn' ;设置为'zh-cn'
鄙人目前也就发现这么多,如有不足请补充,今天碰到了,顺便写一下。