国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

由于編碼問題引發(fā)的ODBC插入數(shù)據(jù)庫中文錯誤

2019-11-09 13:32:06
字體:
供稿:網(wǎng)友
一:問題:用ODBC將字符數(shù)據(jù)插入數(shù)據(jù)庫后,數(shù)據(jù)庫中顯示中文格式亂碼,而英文格式完全正確,用ODBC進行查詢操作完全正確。如下所示二:解決問題:查看編碼方式是否統(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編碼集。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江津市| 吉林市| 新源县| 晋城| 延边| 横山县| 商洛市| 上饶县| 高陵县| 恭城| 罗城| 丽江市| 那曲县| 西平县| 余庆县| 河北省| 邮箱| 峨边| 工布江达县| 南皮县| 金乡县| 微山县| 靖远县| 石城县| 玛曲县| 新巴尔虎左旗| 中卫市| 桐庐县| 湘潭市| 南溪县| 黎平县| 内乡县| 永康市| 南丰县| 濉溪县| 泰和县| 富顺县| 泾川县| 绥江县| 徐汇区| 无锡市|