程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MySQL中文亂碼的原因分析及解決方法

MySQL中文亂碼的原因分析及解決方法

編輯:MYSQL入門知識
  這篇文章主要介紹了MySQL中文亂碼的一些解決方案,以及MySQL中文亂碼的原因分析,需要的朋友可以參考下

我們自己鼓搗mysql時,總免不了會遇到這個問題:插入中文字符出現亂碼,雖然這是運維先給配好的環境,但是在自己機子上玩的時候咧,總得知道個一二吧,不然以後如何優雅的吹牛B。

如果你也遇到了這個問題,咱先不談原因,在PC自帶的cmd中(或者是mysql安裝版安裝後的Command Line客戶端,又或者是工作用的SecureCRT)試試效果。進入mysql環境,從頭開始操作。假設你的客戶端編碼是gbk或者utf8(這麼說太不嚴謹了,怎麼能假設呢,但是一般來說假如安裝後沒動過,cmd是gbk編碼,mysql安裝後的Command Line客戶端沒裝不記得,CRT看看Session Options裡面的編碼設置,一般也會設置成utf8),執行一些語句:

1. 設置編碼客戶端、連接、返回結果的字符集,先設置成latin1

2. 然後執行下面的看下各個字符是不是這樣的

如果你的character_set_client、character_set_connection、character_set_results不是latin1,可以這樣執行,把他們單個分別設置成latin1,比如設character_set_client,其他兩個一樣,確保這三個均是latin1(第一步的sql語句實際做的就是這件事),

3. 單獨創建一個數據庫db_latin1,當然是很簡單的了,測試嘛,創建時就設置數據庫的編碼的為latin1

4. 在它下面創建一張表tab_latin1,字符集也設置成latin1,這裡不設置字符也行,數據庫級已經設置了,這裡只創建一個name字段

5. 插入一些中文字符到表中,先說明,本機的cmd編碼是gbk,查看方法是右鍵屬性->選項,看下當前代碼頁即可知道

6. 查看下結果

看吧,正常顯示中文了~~~

OK,都到這兒了你就不想知道“為什麼我那樣設置就是不行”麼,當然得往下看看是不。上圖:

我們知道mysql是客戶端-服務器軟件,每次操作都是客戶端向服務端發送請求,然後可能會返回一些結果,這之間插入的字符經過了一系列轉換。首先供我們編輯的客戶端本身就有一種編碼,比如PC端的命令行默認是gbk,PC自帶notepad新建文本文件默認是ANSI,常用的文本編輯器如notepad++,我們可能會設置默認編碼為utf8,就是說在編輯器上編輯,你所看到的本身就是一種編碼了。  

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