1. 程式人生 > >mysql插入中文資料亂碼的解決方法(原創)

mysql插入中文資料亂碼的解決方法(原創)

今天向mysql資料庫插入中文欄位時變成了??????,研究若干文章後得到了解決,特此分享。原創,轉載請註明出處。

解決方法主要包括以下步驟,一一檢查配置是否正確。

  • mysql資料庫編碼
  • eclipse編碼
  • 伺服器編碼(以Tomcat為例)
  • 專案JDBC連線設定
  • 前臺頁面編碼設定

mysql資料庫編碼

首先開啟資料庫命令列介面,我使用navicat,以此為例,右鍵資料庫開啟命令列或直接按F6。鍵入show variables like 'character%'; 回車執行,會出現如下介面:
此為已處理過編碼的顯示結果
為了一次性解決mysql的編碼問題,在其安裝目錄下找到my.ini檔案,開啟後幾乎所有內容都被註解掉的,不過此時我們在其中加上兩行內容,確保編碼正確。(注:因為UTF-8編碼的泛用性,我選擇統一使用其作為編碼。具體使用哪種可自己參考

《UTF-8和GBK有什麼區別?到底用哪個好?》

[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8

此時對mysql資料庫的基礎設定以完成,為保證資料庫編碼正確,可在navicat介面中選擇你的資料庫,右鍵選擇資料庫屬性。

這裡寫圖片描述
當顯示編碼如下,則資料庫編碼都為UTF-8.

這裡寫圖片描述

eclipse編碼

開啟eclipse,在頂部選單欄選擇Window>Preferences,在左上角輸入encoding,單擊Workspace,可見如下頁面:

這裡寫圖片描述
左下角有個Text file encoding,如果編碼方式不是UTF-8,那麼選擇Other,並選定編碼為UTF-8,然後應用。並且由於之前已經進行了一部分程式設計,可能需要對之前的程式碼檢查編碼方式並進行轉化,此處不再贅述。

伺服器編碼

本人使用Tomcat8作為伺服器,其他伺服器大同小異,便以此為例說明。首先找到Tomcat的安裝目錄,如果不記得可以在eclipse尋找。Window>Preference
開啟設定面板,Server>Runtime Envirionment,開啟如下頁面:
這裡寫圖片描述

選擇你使用的伺服器,點選右側Edit按鈕即可見如下面板:

這裡寫圖片描述

框起來的內容即為伺服器安裝目錄(PS:如果使用eclipse自帶伺服器,請自行百度如何獲取其目錄。不過不建議使用eclipse自帶的伺服器)。
開啟檔案資源管理器,把地址複製進去,開啟其根目錄。開啟conf>server.xml

,(建議使用Notepad++,一款不錯的編輯器,比記事本友好多了),查詢Connector,找到埠號為8080的非註釋內容,新增如下圖紅框內所示程式碼:
這裡寫圖片描述
然後儲存,伺服器編碼就是UTF-8了。

JBDC連線設定

終於到了最後一步JDBC連線設定。找到配置JDBC連線的檔案,如果想不起來是哪個用eclipse的檔案檢索不限制檔案型別查詢jdbc:mysql即可,例如我的配置在Java檔案裡,如下圖所示:
這裡寫圖片描述
前面紅框裡的部分是資料庫的連線地址,現在在尾部加上圖示紅框厚的部分characterEncoding=utf8

前臺頁面編碼

還有比較容易忽視的一點,如果是通過前臺向後臺傳遞中文資料,存入資料庫,前臺頁面的編碼可能對其也有影響。
-HTML頁面中,加入:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-JSP頁面中,加入:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

至此所有編碼設定都配置完成。重啟伺服器,即可順利插入中文欄位啦~

參考連結