温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java web中文乱码怎么解决

发布时间:2020-06-18 10:54:17 来源:亿速云 阅读:286 作者:Leah 栏目:编程语言

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.数据处理时的格式。

java web中文乱码怎么解决

原则上以上六种格式都要一样,就绝对不会乱码,但有一些特殊情况,其中有一些不一致,显示也会正确,如不需要将输入的内容进行显示和处理时request和respose的格式可以与其他的格式不一致,ps:常用编码ISO-8859-1,gbk,utf-8

因此万无一失的办法如下:

Jsp里的声明语句可以弄掉四种格式,而剩下的两种格式可以用监听器的方法解决:

新建一个监听器

java web中文乱码怎么解决

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 web中文乱码的解决方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI