[原創] MySQL支援UTF-8編碼全攻略

來源:互聯網
上載者:User

最近看到好多關於MySql支援utf-8編碼的問題,剛好自己也要用,去找了一下,沒有寫的很全面的。
整理了一下,供大家參考。

在一下伺服器設定測試通過
伺服器配置:
    window2000
    Tomcat 4.1,5.19
    Mysql 4.1, 5.0
    Java語言,JDK1.4.2
    資料庫驅動mysql-connector-java-3.0.10-stable-bin.jar
    Struts1.1
   
開始前先看提示
MySQL資料庫的4.1是一個分水嶺,4.1直接支援Unicode,以下版本支援的不好;

MySQL JDBC Driver的3.0.16也是一個分水嶺,3.0.16版本會取資料庫本身的編碼,然後按照該編碼轉換,這種方式和Oracle的JDBC Driver是一樣的。例如你的資料庫是GBK編碼的話,JDBC Driver就會把資料庫裡面的取出來的字串按照GBK往unicode轉換,送給JVM。因此正確的設定資料庫本身的編碼就尤為重要。

MySQL JDBC Driver3.0.16以下的版本則不然,它不會那麼智能的根據資料庫編碼來確定如何轉換,它總是預設使用ISO8859-1,因此你必須使用 characterEncoding=GBK來強制他把資料庫中取出來的字串按照GBK來往unicode轉換。

因此,使用什麼資料庫版本,不管是3.x,還是4.0.x還是4.1.x,其實對我們來說不重要,重要的有二:

1) 正確的設定資料庫編碼,MySQL4.0以下版本的字元集總是預設ISO8859-1,MySQL4.1在安裝的時候會讓你選擇。如果你準備使用UTF- 8,那麼在建立資料庫的時候就要指定好UTF-8(建立好以後也可以改,4.1以上版本還可以單獨指定表的字元集)

2) 使用3.0.16以上版本的JDBC Driver,那麼你就不需要再寫什麼characterEncoding=UTF-8

開始設定:
1.開啟WinMysqlAdmin管理器,選擇my.ini設定項,在[mysql]段加入一下代碼
  default-character-set=utf8
  設定後重新啟動MySQL服務。
  再開啟 WinMysqlAdmin管理器,選擇Variables項,查看一下變數的值是否如下
  character_set_server  = utf8
  character_set_system  = utf8
  character_set_database  = utf8
  character_set_client  = utf8
  character_set_connection  = utf8
  character_set_results = utf8
 
  collation_connection = utf8_general_ci
  collation_database = utf8_general_ci
  collation_server = utf8_general_ci
 
  如果不能重啟Mysql服務,則可能拼字錯誤,檢查一下
  以上變數的值都符合,恭喜你,設定成功

2.Java中調用資料庫連接方法如下
  jdbc:mysql://192.168.1.87/mytest?useUnicode=true&characterEncoding=utf8
 
  如果驅動使用3.0.16以上版本的JDBC Driver,那麼你就不需要再寫什麼characterEncoding=UTF-8
 
3.在頁面提交資料處理請看 "中文問題","struts國際化問題"——終極解決方案 一文,非常清楚

4.完成以上三步,你的系統就可以運行與UTF-8編碼環境了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.