1. 程式人生 > >MySQL插入中文顯示問號

MySQL插入中文顯示問號

亂碼問題出現的情況有很多種,針對web開發這一流程來說,可以根據資料的流向來定位亂碼出現的位置。前臺發起一個請求,資料通過http協議到後被接收,這裡資料會進行一次編碼,在ssm環境下,是springMVC來攔截請求進行處理,所以在springMVC中能配置資料的編碼格式,springMVC提供的是一個filter,在web.xml中配置。

   <filter>
        <filter-name>springfilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</
filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>springfilter</filter-name> <
url-pattern>/*</url-pattern> </filter-mapping>

如果經springMVC攔截的中文引數沒有出現亂碼,則說明這裡的編碼沒有出現問題,然後進一步去分析資料的流向。ssm的環境下是mybatis框架與資料庫進行互動,mybatis本身對資料不會進行編碼,但是在與資料庫互動的時候會有編碼的問題,比如在jdbc配置的時候,資料庫連線這裡有一個編碼的引數需要配置。

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/user?useUnicode=true&amp;
characterEncoding=UTF-8 username=root

如果以上的配置都確定沒有問題和,那麼很大可能性就是資料庫亂碼了,在新建資料庫的時候需要選擇一個數據的編碼方式。


這裡如果也沒有問題那就可能就我碰到的問題,資料庫存的中文變成問號。在MySQL的安裝目錄(預設在C:\Program Files\MySQL\MySQL Server 5.x)修改my.ini可以解決。mysql中文顯示亂碼或者問號是因為選用的編碼不對或者編碼不一致造成的,我是通過修改my.ini配置檔案解決了中文變問號的問題。5.7之後沒有這個配置檔案。

在[client]節點下新增  default-character-set=utf8 

在[mysqld]節點下新增 (注:collation是排序方式)
       character-set-server=utf8 
      collation-server=utf8_general_ci 

修改完my.ini檔案後,需要重啟MySQL服務,在cmd中輸入以下命令可以啟動或關閉MySQL的服務,也可以在工作管理員--->服務 中手動關閉或開啟。

關閉服務 net stop mysql

開啟服務 net start mysql

最後可以登入MySQL看看配置是否成功。

show variables like 'char%';  顯示編碼格式


如果都為utf8那就說明配置成功,再去看看亂碼問題解決了沒。