二:解決問題:查看編碼方式是否統(tǒng)一。1.首先查看數(shù)據(jù)庫分別是什么編碼格式:
2.查看插入的表格是什么格式:
3.查看ODBC進行連接是的字符集。我的數(shù)據(jù)源配置文件顯示如下:
到目前為止,發(fā)現(xiàn)插入用和表格所用的編碼格式為UTF8,應該是沒有問題。4.最后查看采用ODBC連接數(shù)據(jù)庫的代碼是否發(fā)生了錯誤:
三:解決方案:
效果如下:
四:知識拓展:《查看三種MySQL字符集方法》MySQL字符集多種多樣,下面為您列舉了其中三種最常見的MySQL字符集查看方法,該方法供您參考,希望對您學習MySQL數(shù)據(jù)庫能有所啟迪。一、查看MySQL數(shù)據(jù)庫服務器和數(shù)據(jù)庫MySQL字符集。mysql> show variables like '%char%'; +--------------------------+-------------------------------------+------ | Variable_name | Value |...... +--------------------------+-------------------------------------+------ | character_set_client | utf8 |...... -- 客戶端字符集 | character_set_connection | utf8 |...... | character_set_database | utf8 |...... -- 數(shù)據(jù)庫字符集 | character_set_filesystem | binary |...... | character_set_results | utf8 |...... | character_set_server | utf8 |...... -- 服務器字符集 | character_set_system | utf8 |...... | character_sets_dir | D:/MySQL Server 5.0/share/charsets/ |...... +--------------------------+-------------------------------------+------ 二、查看MySQL數(shù)據(jù)表(table)的MySQL字符集。mysql> show table status from sqlstudy_db like '%countries%'; +-----------+--------+---------+------------+------+-----------------+------ | Name | Engine | Version | Row_format | Rows | Collation |...... +-----------+--------+---------+------------+------+-----------------+------ | countries | InnoDB | 10 | Compact | 11 | utf8_general_ci |...... +-----------+--------+---------+------------+------+-----------------+------ 三、查看MySQL數(shù)據(jù)列(column)的MySQL字符集。mysql> show full columns from countries; +----------------------+-------------+-----------------+-------- | Field | Type | Collation | ....... +----------------------+-------------+-----------------+-------- | countries_id | int(11) | NULL | ....... | countries_name | varchar(64) | utf8_general_ci | ....... | countries_iso_code_2 | char(2) | utf8_general_ci | ....... | countries_iso_code_3 | char(3) | utf8_general_ci | ....... | address_format_id | int(11) | NULL | ....... +----------------------+-------------+-----------------+-------- 《修改Mysql字符集方法》首先,MySQL的字符集問題主要是兩個概念,一個是Character Sets,一個是Collations,前者是字符內(nèi)容及編碼,后者是對前者進行比較操作的一些規(guī)則。這兩個參數(shù)集可以在數(shù)據(jù)庫實例、單個數(shù)據(jù)庫、表、列等四個級別指定。對于使用者來說,一般推薦使用utf8編碼來存儲數(shù)據(jù)。而要解決亂碼問題,不單單是MySQL數(shù)據(jù)的存儲問題,還和用戶的程序文件的編碼方式、用戶程序和MySQL數(shù)據(jù)庫的連接方式都有關系。首先,MySQL有默認的字符集,這個是安裝的時候確定的,在編譯MySQL的時候可以通過DEFAULT_CHARSET=utf8和DEFAULT_COLLATION=utf8_general_ci這兩個參數(shù)(MySQL5.5版本,5.1版本用--with-charset=utf8 --with-collation=utf8_general_ci)來指定默認的字符集為utf8,這也是最一勞永逸的辦法,這樣指定后,客戶端連接到數(shù)據(jù)庫的編碼方式也默認是utf8了,應用程序不需要任何處理。但是遺憾的是,很多人編譯安裝MySQL的時候沒有指定這兩個參數(shù),大多數(shù)人更是通過二進制程序的方式安裝,那么這時候MySQL的默認字符集是latin1。而這時候我們?nèi)匀豢梢灾付∕ySQL的默認字符集,通過my.cnf文件增加兩個參數(shù):1.在[mysqld]下添加default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)2.在[client]下添加default-character-set=utf8這樣我們建數(shù)據(jù)庫建表的時候就不用特別指定utf8的字符集了。配置文件里的這種寫法解決了數(shù)據(jù)存儲和比較的問題,但是對客戶端的連接是沒有作用的,客戶端這時候一般需要指定utf8方式連接才能避免亂碼。也就是傳說總的setnames命令。事實上,set names utf8命令對應的是服務器端以下幾個命令:SET character_set_client = utf8;SET character_set_results = utf8;SET character_set_connection = utf8;但這三個參數(shù)是不能寫在配置文件my.cnf里的。只能通過set命令來動態(tài)修改。我們需要的是在配置文件里寫好一勞永逸的辦法。那么這時候,是否有在服務端解決問題的辦法呢,可行的思路是在init_connect里設置。這個命令在每個普通用戶連接上來的時候都會觸發(fā)執(zhí)行,可以在[mysqld]部分增加以下一行設置連接字符集:在[mysqld]下添加:init_connect = 'SET NAMES utf8'3.修改完后,重啟mysql的服務,service mysql restart總結:1、首選在編譯安裝MySQL的時候指定兩個參數(shù)使用utf8編碼。2、次選在配置文件my.cnf或my.ini設定兩個參數(shù),同時設置init_connect參數(shù)。3、第三在配置文件my.cnf或my.ini設定兩個參數(shù),同時客戶端的連接指定set names命令。4、在配置文件my.cnf里的client和server處加入default-character-set參數(shù)方便管理。五:知識總結:一定要注意編碼格式,要保證前后統(tǒng)一。對于格式需要,只要插入是utf8,數(shù)據(jù)庫表格為utf8就可以,不用管數(shù)據(jù)庫是utf8還是Latin1編碼集。
新聞熱點
疑難解答