web項目中頁面輸出中文存到mysql數據庫裏變成了亂碼的問題

最好是能斷點跟蹤一下這個中文是在哪一步變成亂碼的,以便更好定位;
如果不方便斷點,就都檢查一下吧:

1.IDE工作空間的字符集改爲UTF-8
以Eclipse爲例:window-Preferences-General-Workspace-Text file encoding

2.在web.xml里加上字符集編碼過濾,解決前端中文亂碼問題
<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.在配置jdbc數據源的時候加上字符集:(其實如果你創建數據庫的時候指定了字符集,這一步就不用加了)
jdbc:mysql://127.0.0.1:3306/logistics?useUnicode=true&amp;characterEncoding=UTF-8

4.數據庫字符集
登錄數據庫,執行如下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了;

基本以上步驟都做了,應該不會再有中文亂碼問題了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章