MySQL4.1的latin1編碼與中文、藏文亂碼解決方案

weixin_34219944發表於2009-11-26
MySQL4.1的latin1編碼與中文、藏文亂碼解決方案
 
MySQL4.1中字串的編碼是latin1,對中文、藏文支援都有問題,常常導致亂碼。
這個問題明明是MySQL歷史遺留的BUG,可是MySQL4已經在運營用中使用,不可能更換資料庫來解決,那隻能在程式上下功夫了。
 
一、中文亂碼問題,這個比較好解決
 
分析latin1的編碼實際上對應的是“ISO-8859-1”編碼。
Java中,要正確的獲取資料庫資料顯示中文,原理上需要將latin1轉換為GBK、GB13080即可,Java從結果集讀取getString()的時候,獲取的資料實際編碼是,實際對應的編碼是“ISO-8859-1”。
 
這樣就有辦法了,讀取資料,將資料從“ISO-8859-1”轉為“GBK/GB13080”。
方法如下:
1、在JDBC的連線URL後面加上useUnicode=true引數。
2、將讀取的結果集轉碼為GBK,比如:
String x = rs.getString("username");
String x1 = new String(xml.getBytes("ISO-8859-1"),"GBK")
 
二、藏文的解決辦法
 
實際上,中文的GB2312中已經包含了所有的藏文字元,因此只要將編碼轉換為"GBK"即可。但是MySQL的JDBC驅動對藏文支援有有問題,只有老版本的mysql-connector-java-3.0.17-ga.zip對藏文支援良好。為此當然選擇這個驅動了。
 
那麼,自然得到藏文的解決方案:
1、在JDBC的連線URL後面加上useUnicode=true引數。
2、選擇mysql-connector-java-3.0.17-ga.zip驅動
3、將讀取的結果集轉碼為GBK,比如:
String x = rs.getString("username");
String x1 = new String(xml.getBytes("ISO-8859-1"),"GBK")
 
在網上看到一些解決中文的問題,不少人說修改MySQL5的驅動,可是怎麼修改也沒發現誰給出程式碼,經過嘗試,MySQL驅動的開發者也不是吃乾飯的,你想改就改啊,不容易的。再說改動可能引起新的問題,不是好辦法。
 
順便給大家看看藏文,不過你要想在自己電腦上,需要安裝藏文字型:
 
 
 
歡迎交流此問題。

相關文章