MySQL編碼不一致導(dǎo)致亂碼問題解決 |
發(fā)布時間: 2012/9/16 15:50:37 |
使用MySQL常常會出現(xiàn)亂碼問題,一般情況下都是因為編碼不一致造成,以下提供了MySQL數(shù)據(jù)編碼相關(guān)的一些信息,希望會有所幫助。 一、MySQL的編碼機(jī)制: 1、數(shù)據(jù)庫級別的編碼:數(shù)據(jù)庫服務(wù)器上允許建立不同編碼的數(shù)據(jù)庫,在數(shù)據(jù)庫建立時需要指定編碼; 2、表級別的編碼:同一個數(shù)據(jù)庫中可以建立不同編碼的表,在表建立時需要指定編碼,默認(rèn)為用戶連接時的編碼;-
4、建立數(shù)據(jù)庫連接時的編碼:用戶可以在建立數(shù)據(jù)庫連接時指定編碼,默認(rèn)為服務(wù)器的配置。 二、出現(xiàn)亂碼的一般原因: 1、建立數(shù)據(jù)庫連接時使用的編碼不對:例如:數(shù)據(jù)庫編碼為UTF-8,連接數(shù)據(jù)時沒有指定編碼格式常常會造成亂碼問題,正常的解決應(yīng)該是在driverURL中指定編碼 jdbc:mysql://localhost:3306/zhuojh?useUnicode=true&characterEncoding=UTF-8 2、表的編碼和driverURL中指定編碼不一致造成的亂碼問題例如:表的編碼是latin1,driverURL中指定編碼卻是UTF-8,在保存時就會提示保存了錯誤的數(shù)據(jù),解決方式就是使用相同的編碼 3、表的編碼和表中字段編碼不一致造成的亂碼問題例如:表的編碼是UTF-8,表中的字段卻是latin,這種情況編碼問題處理起來比較復(fù)雜,建議統(tǒng)一編碼格式,有興趣者可以深入研究 三、案例 1、Spring、Hibernate、Struts和Proxool,采用MySQL數(shù)據(jù)庫亂碼問題解決:如果表和字段的編碼一致都是UTF-8,在Proxool配置中指定下配置項,即可解決亂碼問題 jdbc:mysql://localhost:3306/zhuojh?useUnicode=true&characterEncoding=UTF-8 2、Spring、Struts和iBatis,采用MySQL數(shù)據(jù)庫亂碼問題解決:如果表和字段的編碼一致都是UTF-8,在屬性文件配置中指定下配置項,即可解決亂碼問題 jdbc:mysql://localhost:3306/bcq?useUnicode\=true&characterEncoding\=UTF-8 3、Linux下使用MySQL自帶的備份工具轉(zhuǎn)換不同編碼格式的表數(shù)據(jù)如果源表的編碼格式為latin1,目標(biāo)表的編碼格式為UTF-8,在Linux環(huán)境下可以使用以下命令進(jìn)行轉(zhuǎn)換 mysqldump -C -h ${source_host} -u${source_username} -p${source_password} --default-character-set=latin1 source_database source_tablename|sed -e 's/latin1/utf8/'|mysql -u${local_username} -p${local_password} local_tablename
本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |