首页 / JAVA / javaWeb项目乱码分析和解决
javaWeb项目乱码分析和解决
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javaWeb项目乱码分析和解决,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3199字,纯文字阅读大概需要5分钟。
内容图文
![javaWeb项目乱码分析和解决](/upload/InfoBanner/zyjiaocheng/856/3f507150763b4dd9aecd7391adce8f6e.jpg)
设置文件的保存编码格式,这个一般在新建项目时,设置了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; //?????????????web.xml??
private boolean enabled; //????????Filter????????web.xml??
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){//????????Filter
request.setCharacterEncoding(characterEncoding);
//????request????
response.setCharacterEncoding(characterEncoding);
//????response????
}
chain.doFilter(request, response);
//doFilter????????Filter????Servlet
}
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>
内容总结
以上是互联网集市为您收集整理的javaWeb项目乱码分析和解决全部内容,希望文章能够帮你解决javaWeb项目乱码分析和解决所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。