<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      干掉命令行窗口下MySql亂碼

        晚上重溫dos窗口操作mysql的時(shí)候,遇到了一個(gè)巨蛋疼的問題------>中文驗(yàn)證碼  -->_-->,所以找了找資料弄懂了怎么解決亂碼問題,,小記一下。

      新建一個(gè)表

      create table student(
          id int,
          name varchar(20),
          chinese float,
          english float,
          math float
      );

      向表中插入數(shù)據(jù)(包含中文)

      insert into student (id,name,chinese,english,math) values (1,'李狗蛋',88,93.5,78);

      結(jié)果如下:

      報(bào)了一個(gè)Data too long for column 'name' at row 1的錯(cuò)誤,,,為什么呢?我的那么字段是20個(gè)字符的啊,,,李狗蛋三個(gè)字肯定夠啊,,,為什么還提示太長了呢!?。?!其實(shí)呢,,這種情況下就算你只有一個(gè)漢字,也會報(bào)這個(gè)錯(cuò)。。。。原因何在?----->中文亂碼問題?。。?/span>

      跟servlet中亂碼產(chǎn)生的原因一樣,還是在與提交與接受二者之間的編碼方式不一樣。。。。

      我們知道,在中文版win7下 dos命令行的默認(rèn)編碼方式都是gbk的,而我們裝的mysql服務(wù)器的默認(rèn)編碼方式確實(shí)utf8,,這樣,,兩個(gè)編碼方式不一樣。。。通過dos窗口向mysql服務(wù)器提交中文數(shù)據(jù),一個(gè)以gbk編碼提交,一個(gè)以utf8解碼接收,可不就產(chǎn)生了亂碼了嘛。

      不信我們看看mysql的默認(rèn)編碼----在dos窗口輸入

      show variables like 'character%';

       查看mysql服務(wù)器的編碼各種編碼狀態(tài),如下:

      但其實(shí)這些編碼格式只是mysql認(rèn)為的你的系統(tǒng)的編碼模式,但實(shí)際情況并非如此。表現(xiàn)在:客戶端編碼-->mysql認(rèn)為utf8,但其實(shí)你的dos命令行是在我天朝的win7下,那么你就是gbk的編碼格式,而不是utf8;其他的都是默認(rèn)的utf8。到這里就可以看到,客戶端為gbk,連接方式為utf8,服務(wù)器存儲方式為utf8,結(jié)果返回方式是utf8,那么,,亂碼的出現(xiàn)原因就呼之欲出了--->兩方編碼不一樣,以gbk敲代碼,結(jié)果以u8編碼,然后以utf8發(fā)送,以utf8接收。所以怎么解決呢?

        兩種辦法解決亂碼問題:臨時(shí)方法和徹底方法。

      臨時(shí)方法:在dos行下輸入“set names gkk;”然后再查看一下編碼方式,如下:

        明確告訴客戶端,我的dos行是以gbk敲進(jìn)去的,你得用gbk給我編碼;告訴連接橋,我數(shù)據(jù)是gbk的,你得用gbk給我傳輸;告訴服務(wù)端,我的dos行是gbk的,你得用gbk把我存的數(shù)據(jù)返回給我。現(xiàn)在我們再插入有之前有中文的那行數(shù)據(jù),

      可以看到,亂碼問題已經(jīng)不存在了。。。。但是呢,開頭都說了,這中方法是臨時(shí)型的,,為何?來,打開另一個(gè)dos窗口,查看下所有的編碼方式:

      這個(gè)時(shí)候,你再插入帶有中文的數(shù)據(jù),保證還是剛才的錯(cuò)誤。。。為啥呢?因?yàn)?set names gbk;"只針對當(dāng)前客戶端(就是那個(gè)dos窗口)起作用。。打開另一個(gè)窗口就不行了,所以這種方法治標(biāo)不治本。如果每次都這樣,那不得累死了!!(不要跟我說你用可視化的mysql操作軟件,,我們現(xiàn)在的語境是你根本不知道可視化,,,),那么怎么一勞永逸的解決這個(gè)問題呢?

      徹底解決:修改mysql配置文件--->my.ini

      找到你的mysql安裝目錄下的my.ini文件,記事本打開,找到-----default-character-set=utf8 這句話,修改utf8為gbk

      然后重啟mysql,,好了,亂碼被干掉了。Oh YEAH!!

       

      多說一下,為什么改成gbk之后就搞定了亂碼。。這中間涉及到了三個(gè)數(shù)據(jù)轉(zhuǎn)換過程:編碼,解碼,轉(zhuǎn)碼。

      所謂編碼,就是將字符編成二進(jìn)制數(shù)據(jù)的過程;

      所謂解碼,就是將二進(jìn)制數(shù)據(jù)解析為字符的過程;

      所謂轉(zhuǎn)碼,就是將一個(gè)字符從a字符集表示的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成b字符集表示的二進(jìn)制數(shù)據(jù)的過程。

      在客戶端通過連接橋?qū)bk的數(shù)據(jù)發(fā)送給服務(wù)器的時(shí)候,兩方的編碼集其實(shí)是不一樣的,數(shù)據(jù)庫接收到的是gbk,服務(wù)器要以utf8存儲,在這個(gè)過程中,如果不做些什么,亂碼是解決不掉的。。其實(shí)在這個(gè)過程中,服務(wù)器自己做了一個(gè)轉(zhuǎn)碼的操作:將接收到的gbk數(shù)據(jù)轉(zhuǎn)換成utf8存儲到數(shù)據(jù)庫中,然后你查詢的時(shí)候它自動將utf8的數(shù)據(jù)轉(zhuǎn)換成gbk返回給你看。所以,亂碼沒了。

      posted @ 2015-04-30 23:43  Buffalo_L  閱讀(2590)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲午夜无码久久久久蜜臀AV| 欧美乱码精品一区二区三区| 久久婷婷综合色丁香五月| 日本高清在线播放一区二区三区| 国产无遮挡免费真人视频在线观看| a∨变态另类天堂无码专区| 九九热视频在线免费观看| 亚洲成人av在线资源| 亚洲精品色无码AV试看| 苍井空一区二区三区在线观看| 久久久久久免费一区二区三区| 成人区人妻精品一区二区 | 无遮挡高潮国产免费观看| 青草精品国产福利在线视频| 精品一区二区三区免费视频| 少妇xxxxx性开放| 久久精品国产精品亚洲蜜月| 国产欧美精品一区aⅴ影院| 成人午夜在线观看日韩| av激情亚洲男人的天堂| 92精品国产自产在线观看481页| 国产成AV人片久青草影院| 三级4级全黄60分钟| 中文字幕无码免费久久9一区9| 国产超碰无码最新上传| 国产精品九九九一区二区| 日韩欧美aⅴ综合网站发布| 999精品色在线播放| bt天堂新版中文在线| 无码人妻斩一区二区三区 | 色又黄又爽18禁免费网站现观看| 欧洲亚洲成av人片天堂网| 欧美成人影院亚洲综合图| 看全色黄大黄大色免费久久| 无码囯产精品一区二区免费| 成人午夜电影福利免费| 国产av一区二区三区久久| 国产360激情盗摄全集| 国产成人久久精品二区三| 午夜通通国产精品福利| 国产精品视频午夜福利|