1. 程式人生 > >web項目存數據到數據庫,中文亂碼,解決過程

web項目存數據到數據庫,中文亂碼,解決過程

問題 async sql安裝 -s pat character value 127.0.0.1 supported

排查原因:

打斷點,查看到底是在執行存數據庫操作之前就已經亂碼了,還是存數據庫操作後亂碼的。

前者解決方案:

在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
>
在配置jdbc數據源的時候加上:
jdbc:mysql://127.0.0.1:3306/logistics?useUnicode=true&amp;characterEncoding=UTF-8
存數據庫操作後亂碼,解決方案:
登錄數據庫,執行如下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編碼格式設置錯誤。

解決:

找到mysql安裝路徑下的my.cnf文件在[mysqld]下添加如下兩行:

character_set_server=utf8
init_connect=‘SET NAMES utf8‘

再次查看,問題解決:

| 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

web項目存數據到數據庫,中文亂碼,解決過程