程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Redhat5下MySql遇到的亂碼問題

Redhat5下MySql遇到的亂碼問題

編輯:MySQL綜合教程

我在虛擬機上安裝了redhat並安裝了mysql數據庫,並在本地通過java訪問,直接使用jdbc訪問。 後來發現當數據庫存儲漢字時存在亂碼問題,隨後在網上找資料進行解決,現在問題已經解決,來總結一下亂碼的幾個問題。   更改數據庫默認字符集編碼: 更改mysql配置文件,這個配置文件在/etc/my.cnf,可能安裝mysql後這個文件就有了,如果沒有,請回到根目錄然後查詢cnf文件: Java代碼   find / -iname '*.cnf' -print    拷貝 small.cnf、my-medium.cnf、my-huge.cnf、my-innodb-heavy-4G.cnf其中的一個到/etc下,改名為my.cnf: Java代碼   cp /usr/share/mysql/my-medium.cnf /etc/my.cnf    拷貝路徑根據查詢出來的結果修改。 修改my.cnf Java代碼   vi /etc/my.cnf    在[client]下添加 Java代碼   default-character-set=gbk    在[mysqld]下添加 Java代碼   default-character-set=gbk    然後重啟mysql。 登錄mysql查詢是否生效: Java代碼   mysql> show variables like 'collation_%';   mysql> show variables like 'character_set_%';   注意如果你設置的是UTF-8請設置utf8,而不是utf-8,否則你的mysql重啟時不能啟動。     修改數據庫字符集後再修改數據庫的字符集: Java代碼   mysql>use mydb   mysql>alter database mydb character set gbk;    建議是在創建數據庫時就指定字符集 Java代碼   mysql>create database mydb character set gbk;   除了使用命令來修改數據的字符集,也可以修改其配置文件 修改 /var/lib/mysql/mydb/db.opt Java代碼   default-character-set=latin1   default-collation=latin1_swedish_ci    為 Java代碼   default-character-set=gbk   default-collation=gbk_general_ci    重起MySQL    建表時注意: 除了修改mysql和其數據庫的字符集外,要注意建表時你可能用的是導出的SQL語句,這些語句中可能包含了建表的字符集,一定要修改或刪除這些語句: Sql代碼   CREATE TABLE `NewTable` (   `id`  int(11) NOT NULL ,   `name`  varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ,   `age`  int(100) NULL DEFAULT NULL ,   PRIMARY KEY (`id`)   )   ENGINE=MyISAM   DEFAULT CHARACTER SET=gbk COLLATE=gbk_chinese_ci   CHECKSUM=0   ROW_FORMAT=DYNAMIC   DELAY_KEY_WRITE=0   ;     連接方面: 如果數據庫配置正確,那麼使用管理工具如Navicat for MySQL時就不會有問題了,但是在程序中難免還是有問題。  除了對於數據庫方面的注意外,在連接數據庫要注意指定連接的字符集 Java代碼   jdbc:mysql://192.168.154.128:3306/t2?useUnicode=true&characterEncoding=gbk     程序方面: 可是就算到這裡仍然可能是亂碼,但是沒有那麼嚴重了,這就要你在代碼中進行轉換了。 Java代碼   String newStr = new String(s.getBytes("ISO-8859-1"),"GBK");      也許有人會說,亂碼就是亂碼,還嚴重不嚴重?其實亂碼在我看來分為兩種情況,一種就是存儲或者其他方面亂了,而另一種是存儲是對的但是顯示有問題。比如你設置正確後使用管理工具沒有問題但是程序讀取就有問題。 如果你看到的亂碼是根本不知道顯示的是什麼,那就是嚴重的。但如果你看到的是????那在我看來就是缺少轉換,就不屬於大問題。當然這是個人看法,請大家不要鑽牛角尖。       作者 cuisuqiang

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved