项目开发过程中总是会遇到各种奇奇怪怪的问题,比如乱码,下面总结了几种常见的乱码解决当方法。
出现中文乱码问题的种类:
1、JSP页面显示乱码
JSP页面显示乱码是由于页面未设置编码方案,通过页面的page指令的contextType属性和pageEncoding属性以及HTML META标签的charset属性中都指定使用中文编码即可。代码举例如下。
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8” import=“java.sql.*”%>
<metahttp-equiv="Content-Type"content=“text/html; charset=UTF-8”>
1
2
3
2、 表单提交中文时出现乱码
JSP获取页面参数时,一般是采用默认的编码方案(ISO8859-1),如果页面参数的编码和页面的编码不一致时,很有肯能出现乱码。如果确定乱码问题是出于此,解决方案如下。
在获取表单数据时,
首先使用request的setCharacterEncoding()方法强行设置获取表单数据的编码方案,但是要注意这种方法仅仅适用于表单的method属性为post时。代码举例如下。
//假设页面要获得的参数名称为tname
request.setCharacterEncoding(“UTF-8”);
String topic=request.getParameter(“tname”);
1
2
如果表单的method属性为get方式
使用手动转换的方式,代码举例如下。
//假设页面要获得的参数名称为tname
String topic=request.getParameter(“tname”);
topic=newString(topic.getBytes(“ISO-8859-1”),“UTF-8”);
1
2
变量输出到JSP页面上出现了乱码,通过response的setContentType()方法设置。
response.setContentType(“text/html;charset=utf-8”);
3、数据库读取数据显示乱码
当程序向数据库保存信息或者读取数据库的信息时会出现中文乱码现象,要保证数据库和jsp页面的编码一致,建议统一使用utf-8编码方案。本文以mysql为例。
第一步:更改数据库编码方式
首先更改表的编码方式,alter table 表名 default character set utf8;
再更改列的编码方式,alter table 表名 change 列名列名数据结构 character set utf-8 ;
第二步:在连接数据库时
//要输入你自己的用户名、密码、数据库名字
connection=DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名?user=用户名&password=密码&userUnicode=true&characterEncoding=utf-8”);