Java web开发中的乱码问题

来源:互联网 发布:安装linux的步骤 编辑:程序博客网 时间:2024/05/02 02:42

Java web开发中的乱码问题主要包括以下三种:

  • jsp页面中,中文显示乱码
  • get请求中文参数传输到服务端乱码了
  • post请求中文参数传输到服务端乱码了

jsp页面乱码

Jsp文件中会出现下面所示的编码指定方式:

<%@ page language=“Java” contentType=“text/html; charset=UTF-8″ pageEncoding=“UTF-8″%><meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8″>
  1. pageEncoding=”utf-8” –该jsp文件自身采用的编码格式,也就是告诉服务器使用什么编码翻译jsp文件成java文件。 注意: jsp中post表单的编码由pageEncoding和contentType参数决定,以pageEncoding为准,如果没有pageEncoding则以contentType为准,如果没有contentType以Meta标签中的charset为准,都没有则以ISO-8859-1编码。
  2. contentType=”text/html;charset=utf-8”服务器发送浏览器的数据类型和内容编码。其中charset=”utf-8”–用来指定Tomcat返回响应时采用的编码,也是post方式提交参数的编码方式。
  3. Meta标签中的charset是在contentType未指定编码时采用的默认编码格式。

get请求中文乱码处理方案

get请求乱码处理方案

post请求乱码处理方案

post请求乱码处理方案

针对上述get和post请求中文乱码问题问题,其实在Java web方式中的处理很简单,只需要在web.xml中添加字符处理过滤器即可,如下图所示:

<filter>        <filter-name>encodingFilter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter        </filter-class>        <init-param>            <param-name>encoding</param-name>            <param-value>UTF-8</param-value>        </init-param>        <init-param>            <param-name>forceEncoding</param-name>            <param-value>true</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

总结

开发时应注意工作区编码,前端编码,服务器编码,数据库编码一致。造成乱码的原因就是因为使用了错误的字符编码去解码字节流,因此当我们在思考任何跟文本显示有关的问题时,请时刻保持清醒:当前使用的字符编码是什么。

0 0