In the web project, the page output in Chinese is stored in the mysql database and becomes garbled.

It is best to track the breakpoint at which step the Chinese became garbled for better positioning;
If breakpoints are inconvenient, check them all:

1. Change the character set of IDE workspace to UTF-8
以Eclipse为例:window-Preferences-General-Workspace-Text file encoding

2. Add character set encoding filtering in web.xml to solve the problem of front-end Chinese garbled characters
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param:>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3. Add the character set when configuring the jdbc data source: (In fact, if you specify the character set when you create the database, you don't need to add this step)
jdbc:mysql://127.0.0.1:3306/logistics?useUnicode=true&characterEncoding=UTF-8

4. Database character set
登录数据库,执行如下sql:
show variables like 'character%';
结果:
| character_set_client     | utf8                                                   |
| character_set_connection | utf8                                                   |
| character_set_database   | latin1                                                 |
| character_set_filesystem | binary                                                 |
| character_set_results    | utf8                                                   |
| character_set_server     | latin1                                                 |
| character_set_system     | utf8                                                   |
可以看到character_set_database和character_set_server的字符集不是utf8,这个往往出现在用rpm包安装的情况下,默认就是latin1的,所以需要修改
修改方法网上教程很多,但是不同版本其实有所区别,比如很多教程里说到修改my.cnf配置,但是并不是所有的my.cnf配置文件里都有[client]和[mysql],而是只有[mysqld],如果是第一次修改的朋友,可能会在这里有一些困惑;
如果只有[mysqld],只需要在[mysqld]下面添加一行character-set-server=utf8,(如果mysql是5.6以前的版本,字符集设置是 default-character-set=utf8),然后重启即可;
再去数据库里面查看如下:
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client    | utf8                       |
| character_set_connection | utf8                      |
| character_set_database   | utf8                      |
| character_set_filesystem | binary                    |
| character_set_results    | utf8                       |
| character_set_server    | utf8                       |
| character_set_system    | utf8                     |
| character_sets_dir      | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
已经变为utf8了;

基本以上步骤都做了,应该不会再有中文乱码问题了。

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325438408&siteId=291194637