mysql怎么打中文亂碼 mysql57中文亂碼

mysql輸入中文亂碼怎么解決

首先:

站在用戶的角度思考問題,與客戶深入溝通,找到宜秀網(wǎng)站設(shè)計與宜秀網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋宜秀地區(qū)。

用show variables like “%colla%”;show varables like “%char%”;這兩條命令查看數(shù)據(jù)庫與服務(wù)端的字符集設(shè)置

如果查看出來都是gbk2312,或 gbk,那么就只能支持簡體中文,繁體和一些特殊符號是不能插入的,我們只有修改字符集為UTF-8,

修改方法如下:

用記事本或UitraEdit打開mysql數(shù)據(jù)庫安裝目錄下的my.ini文件打開, 然后Ctrl+F搜索default-character-set,將后面的字符集修改為UTF8,注意要修改兩個地方,一個事客戶端的,一個是服務(wù)端的。

然后保存,重啟mysql服務(wù)、、進去繼續(xù)用show variables like “%colla%”;show varables like “%char%”;著兩條語句查詢一下字符集。

MySQL數(shù)據(jù)庫中的中文亂碼如何解決

mysql數(shù)據(jù)亂碼問題可能有以下三種原因:

1.server本身設(shè)定問題,例如還停留在latin1版本;

2.table的語系設(shè)定問題(包含character與collation);

3.客戶端程式(例如php,java)的連線語系設(shè)定問題;

建議使用utf8!!!!

想要避免mysql的中文亂碼問題,可以嘗試以下方法:

1,對于版本問題,建議去官網(wǎng)更新最新的版本或者比較好用的版本;

2,創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表時沒有對字符編碼進行設(shè)定會造成亂碼問題:

創(chuàng)建數(shù)據(jù)庫的時候:CREATE DATABASE `test`

CHARACTER SET 'utf8'

COLLATE 'utf8_general_ci';

建表的時候 CREATE TABLE `database_user` (

`ID` varchar(40) NOT NULL default '',

`UserID` varchar(40) NOT NULL default '',

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3,對于第三種情況,參考一下方法:

編輯linux服務(wù)器中/etc/my.cnf文件,在[mysql]段加入default_character_set=utf8;

如果只是調(diào)試遇到亂碼問題:

在編寫Connection URL時,加上?useUnicode=truecharacterEncoding=utf-8參數(shù);

并且在網(wǎng)頁代碼中加上一個"set names utf8"或者"set names gbk"的指令,告訴MySQL連線內(nèi)容都要使用utf-8或者gbk。

utf8或者gbk;

mysql數(shù)據(jù)庫表里中文亂碼應該選哪種編碼?

數(shù)據(jù)庫中關(guān)于字符集的種類有很多,個人建議,數(shù)據(jù)庫字符集盡量使用utf8(utf-8),以使你的數(shù)據(jù)能很順利的實現(xiàn)遷移,因為utf8字符集是目前最適合于實現(xiàn)多種不同字符集之間的轉(zhuǎn)換的字符集,盡管你在命令行工具上無法正確查看數(shù)據(jù)庫中的內(nèi)容,我依然強烈建議使用utf8作為默認字符集.如果你想使用gb2312編碼,那么建議你使用latin1作為數(shù)據(jù)表的默認字符集,這樣就能直接用中文在命令行工具中插入數(shù)據(jù),并且可以直接顯示出來.而不要使用gb2312或者gbk等字符集,如果擔心查詢排序等問題,可以使用binary屬性約束 對編程有影響的主要是客戶端字符集和數(shù)據(jù)庫字符集(還有一個服務(wù)器字符集,不知道干什么用的), 數(shù)據(jù)庫中常用的操作就是保存數(shù)據(jù)和讀取數(shù)據(jù),在這過程中,亂不亂碼和數(shù)據(jù)庫字符集貌似沒有什么關(guān)系。我們只要保證寫入時選擇的字符集和讀取時選擇的字符集一致,即只需保證兩次操作的客戶端字符集一致即可。 \x0d\x0a在MySQL的客戶端上執(zhí)行一次查詢的過程一般是,在客戶端的提示符后面輸入一條SQL語句,回車,然后終端顯示出查詢的結(jié)果。這個過程中,只有終端和三個MySQL的系統(tǒng)變量指定了正確的字符集,才能保證我們將一個正確的SQL語句送到服務(wù)器,然后服務(wù)器返回正確的結(jié)果,并且在終端正確顯示。 \x0d\x0a三個MySQL的系統(tǒng)變量是: \x0d\x0a1. character_set_client,終端字符集,告訴Server客戶端提交的SQL語句的編碼格式 \x0d\x0a2. character_set_connection,連接字符集,是服務(wù)器翻譯SQL語句時用到的編碼格式 \x0d\x0a3. character_set_results,返回的結(jié)果集的字符集,是服務(wù)器返回結(jié)果集之前把結(jié)果集轉(zhuǎn)換成的編碼格式 \x0d\x0a在MySQL終端通過執(zhí)行命令 show variables like ‘char%’ 可以查看這幾個變量的值。這三個變量通常都設(shè)定為同一種字符集,用命令set names [charset name]就可以修改這三個變量的值。一般來說,只要你設(shè)定了能夠表示你的數(shù)據(jù)的字符集,你查詢的結(jié)果都可以在終端正確顯示。 \x0d\x0a舉個例子,使用的表t1是utf8編碼,表中的字段c1繼承了這個編碼,表創(chuàng)建如下 \x0d\x0amysql create table t1 ( c1 text not null ) character set utf8; \x0d\x0a用的字符是漢字“范”,gbk編碼為B7 B6,utf8編碼為E8 8C 83 \x0d\x0a用下面的SQL語句插入數(shù)據(jù) \x0d\x0amysql insert into t1 values( ‘范’); \x0d\x0aa)如果終端設(shè)置為utf8,并且執(zhí)行了 set names utf8,那么插入到數(shù)據(jù)庫中的就是“范”這個字的utf8編碼,這個過程中MySQL不需要做編碼轉(zhuǎn)換。寫入數(shù)據(jù)庫的內(nèi)容可以通過執(zhí)行 select hex( c1 ) from t1 得到數(shù)據(jù)的十六進制編碼來驗證。 \x0d\x0a\x0d\x0ab)如果終端設(shè)置為 utf8,并且執(zhí)行了set names gbk,那么執(zhí)行完這個插入操作后,寫入的二進制數(shù)據(jù)是E9 91 BC,這是“漢字“鑼”的utf8編碼。這是因為,終端輸入的“范”用的是utf8編碼,而服務(wù)器以為終端發(fā)送過來的內(nèi)容是gbk編碼,所以在向t1表中插入的時候進行了一次gbk到utf8的轉(zhuǎn)換,結(jié)果當然是錯誤的。 \x0d\x0a\x0d\x0ac)如果終端設(shè)置為gbk,并且執(zhí)行了set names gbk,那么執(zhí)行完插入操作后,寫入t1的依然是“范”這個字的utf8編碼。插入過程中,終端輸入的是“范”的gbk編碼B7 B6,服務(wù)器被告知終端發(fā)過來的SQL語句是gbk編碼(由character_set_client指定),所以在插入數(shù)據(jù)前做了一次gbk到utf8的編碼轉(zhuǎn)換。 \x0d\x0a\x0d\x0ad)如果終端設(shè)置為gbk,并且執(zhí)行了set names utf8,那么執(zhí)行完插入操作后,MySQL會報出一個數(shù)據(jù)被截斷的警告。實際上,輸入終端的是“范”這個字符的gbk編碼B7 B6,而服務(wù)器被告知客戶端發(fā)過來的SQL語句是utf8編碼,所以在執(zhí)行過程中沒有做轉(zhuǎn)碼,直到插入數(shù)據(jù)的時候,發(fā)現(xiàn)B7 B6不符合utf8的編碼規(guī)則,給出了警告信息,實際插入的數(shù)據(jù)是3F 3F,也就是兩個問號。 \x0d\x0a\x0d\x0a查詢的時候是同樣的道理,MySQL也是根據(jù)set names設(shè)定的字符集來對返回給客戶端的結(jié)果集做相應的編碼轉(zhuǎn)換,如果轉(zhuǎn)換的結(jié)果和終端顯示的字符集一致,就能正確顯示,如果不一致就是亂碼。 \x0d\x0a\x0d\x0a結(jié)論是,只要終端的字符集和set names指定的字符集一致就可以讓MySQL在處理過程中執(zhí)行正確的轉(zhuǎn)碼并且正確地顯示。 \x0d\x0a\x0d\x0a另外,如果通過程序操作MySQL數(shù)據(jù)庫, 那么也需要事先執(zhí)行set names命令來指定程序希望輸出的字符集。比如,用程序從一個utf8編碼的數(shù)據(jù)庫向另外一個gbk編碼的數(shù)據(jù)庫進行數(shù)據(jù)遷移,在選取源數(shù)據(jù)庫數(shù)據(jù)之前,需要執(zhí)行set names gbk,才能取到gbk編碼的數(shù)據(jù)。

當前標題:mysql怎么打中文亂碼 mysql57中文亂碼
文章位置:http://bm7419.com/article20/dohgico.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導航網(wǎng)站制作、外貿(mào)建站服務(wù)器托管、商城網(wǎng)站網(wǎng)站導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)