web 项目中浏览器显示乱码?

初学 web 项目开发时,很多人都会遇到中文显示乱码问题,百度一下解决方案看的眼花缭乱,再怎么修改问题依然得不到解决。乱码是如何产生的?当你知道为什么会乱码,理解底层原理之后,你会发现眼前一亮,话不多说,看下图:
web 项目中浏览器显示乱码?_第1张图片

通过上图可知

  • 编码1 和 解码1 使用的编码格式必须相同
  • 编码2 和 解码2 使用的编码格式必须相同

注意:满足上述两条肯定时不会出现乱码的,一般在这四个地方都使用 UTF-8(万国码)

编码设置:(根据上图序号)

  1. form表单:

  2. 服务器的编码格式(request):
    GET和POST方法提交的信息,Tomcat采用了不同的方式来处理编码,对于POST请求,Tomcat会使用request.setCharacterEncoding方法所设置的编码来处理,如果未设置,则使用默认编码。而GET请求则不同,Tomcat对GET请求统一使用Tomcat默认的编码。
    Tomcat 7 及以前的版本 默认编码方式为 IOS-8859-1, 从Tomcat 8开始默认使用 UTF-8

    1.接收get方式
    方式一:(知道使用什么字符集编码)先解码,再编码
    String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8");

    方式二:修改tomcat配置文件 (不建议)

    2.接收post方式
    方式一:request.setCharacterEncoding("UTF-8") ;(放在获取参数前才有效)

    方式二:需要在web.xml中配置过滤器


   
       CharacterEncodingFilter
       org.springframework.web.filter.CharacterEncodingFilter
       
           encoding
           utf-8
       
   
   
       CharacterEncodingFilter
       /*
   
  1. response :
    方式一:response.setCharacterEncoding("UTF-8");(只能用来设置out输出流中所采用的编码)

    方式二:response.setContentType("text/html;charset=UTF-8");(设置out输出流中字符的编码方式,同时也设置浏览器接收到这些字符后以什么编码方式来解码)

  2. 浏览器显示:
    jsp 或者 html 页面头部添加 "
    在浏览器中打开开发模式,在控制台中 使用 document.charset 可查看当前页面的编码格式
    web 项目中浏览器显示乱码?_第2张图片

总结: 在上述四个地方的编码方式相同,乱码就不会发生了。

eclipse 编辑器中的乱码解决,点击查看

你可能感兴趣的:(*Java)