中文乱码问题的处理

1、在Java代码中指定编码格式
首先在Java代码中分别加上请求和响应时的编码格式,我这里指定的字符集是“UTF-8”。

//指定request请求时的字符编码格式
req.setCharacterEncoding("UTF-8");							
//设置response响应的字符编码格式
resp.setCharacterEncoding("UTF-8");						
//设置响应内容类型为 text/html(文本/超文本标记语言);文本编码为UTF-8
resp.setContentType("text/html'charset=UTF-8");		

也可以用拦截器改成统一字符编码用web.xml或者编写Filter类,这里我就不介绍了。

2、前端页面中出现的中文乱码
如果前端页面是 JSP 页面,这时需要指定编码格式与Java代码中的编码格式保持一致。找到顶部的<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>设置编码格式。

jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

如果是 HTML 页面,需要检查下里面的编码格式是否与Java代码中指定的编码格式一致(一般默认是utf-8)。

<meta charset="UTF-8">

3、往数据库中存数据时出现的中文乱码
如果从页面上往数据库中存数据时出现了中文乱码,并且前两步都检查过了没啥问题,这时需要检查下数据库的编码格式与Java中的编码格式是否一致。
首先输入命令查看数据库的字符编码,然后修改字符编码(数据库中的字符编码是‘utf8’格式,不是‘utf-8’,中间没有‘-’,这个一定要注意)

//在数据库中数据该代码,查看数据库的编码格式
show variables like ‘character_set_database’;
//修改数据库的字符编码位utf8格式
alter database hcwx character set utf8;

4、在url的后端设置字符编码
当然,有时候也会在连接数据库的时候 在url的后面加上一些代码,防止出现中文乱码的现象。
在连接数据库时,在数据库名的后面加上【?useUnicode=true&characterEncoding=UTF8;】

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_test?useUnicode=true&amp;characterEncoding=UTF8;
username=root
password=itheima

5、get请求方式出现的中文乱码
有时候我们把上面的步骤都做完了,当从页面中往数据库中存数据时还是出现中文乱码的现象,如论怎么检查代码都没有发现错误,很让人崩溃。这时就需要看下是不是get请求方式的问题了。

<form action="${pageContext.request.contextPath}/urlController" method="get" autocomplete="on">
       内容:<input type="text" /><br>
        <button id="btn" type="submit">提交</button>
</form>
//-------把get请求换成post请求方式---------
<form action="${pageContext.request.contextPath}/urlController" method="post" autocomplete="on">
       内容:<input type="text" /><br>
        <button id="btn" type="submit">提交</button>
</form>

6、修改数据库配置文件中的编码
最后还有就是数据库配置文件中的字符编码格式了,这个需要找到数据库的安装目录,在数据库的安装目录里找到【my.ini】文件,选择编辑,在文件中修改或者设置字符编码
在【mysql】和【mysqld】下面分别配置字符编码,此处的编码是【utf8】一定要注意不要写成 utf-8

[mysql]
port=3306
default-character-set=utf8
[mysqld] 
character-set-server=utf8
character_set_server=utf8
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐