自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL 中文亂碼的產(chǎn)生與解決

數(shù)據(jù)庫(kù) MySQL
我們今天主要向大家講述的是MySQL 中文亂碼的解的實(shí)際操作方案,如果你在實(shí)際操作中遇到中文亂碼問題的話,相信以下的文章對(duì)你而言算是一大驚喜。

以下的文章主要介紹的是對(duì)MySQL 中文亂碼的解的實(shí)際操作方案,以及對(duì)MySQL數(shù)據(jù)庫(kù)中文亂碼的產(chǎn)生原因的描述與在對(duì)MySQL 中文亂碼進(jìn)行解決過程中值得我們大家注意的事項(xiàng)的說明,下面就是文章的具體內(nèi)容。

MySQL中文亂碼的原因

 

MySQL(和PHP搭配之***組合)會(huì)出現(xiàn)中文亂碼的原因不外乎下列幾點(diǎn):

MySQL(和PHP搭配之***組合) server本身設(shè)定問題,例如還停留在latin1

MySQL(和PHP搭配之***組合) table的語(yǔ)系設(shè)定問題(包含character與collation)

客戶端程式(例如php)的連線語(yǔ)系設(shè)定問題

在之前的兩篇文章中已介紹過如何設(shè)定MySQL(和PHP搭配之***組合) server/table的character/collation。

接下來只需要補(bǔ)充幾點(diǎn)注意事:

MySQL中文亂碼必勝解決法

 

1、MySQL(和PHP搭配之***組合)啟動(dòng)時(shí)會(huì)讀取一個(gè)預(yù)設(shè)的config檔,一般名稱為my.ini,而它會(huì)到下列兩位置去尋找這個(gè)檔案:

C:\windows\my.ini也就是作業(yè)系統(tǒng)的安裝目錄,也有可能是C:\winnt\my.ini

C:\:my.cnf也就是C disk的根目錄

 

注意不同位置里的檔案suffix不一樣,這點(diǎn)在之前的文章中沒有特別強(qiáng)調(diào),因此那時(shí)我是用更復(fù)雜的方法直接重新將MySQL(和PHP搭配之***組合)注冊(cè)到service里面,并在那里指定my.ini的位置。

 

2、my.ini里的內(nèi)容為:

 

  1. [MySQL(和PHP搭配之***組合)d]  
  2. defaultcharacterset=utf8 
  3. [client]  
  4. defaultcharacterset=utf8 
  5. init_connect='SET NAMES utf8' 

其中MySQL(和PHP搭配之***組合)d是指定server啟動(dòng)時(shí)要用的語(yǔ)系,但如果這里設(shè)定為utf8可能會(huì)讓許多英文軟體不開心,例如osCommerce/mediaWiki,所以這里建議設(shè)成latin1。

下面的client則是設(shè)定當(dāng)client連線時(shí)要使用什么語(yǔ)系,但可惜的是這個(gè)設(shè)定不是每個(gè)client都會(huì)鳥它,基本上只有MySQL(和PHP搭配之***組合)自已家的程式,例如MySQL(和PHP搭配之***組合).exe, MySQL(和PHP搭配之***組合)d.exe, MySQL(和PHP搭配之***組合)admin.exe或是MySQL(和PHP搭配之***組合) Control Center這種程式會(huì)去讀取這個(gè)設(shè)定檔然后改用utf8連線。

note:感謝b6s桑熱情相助提供第二行指令,據(jù)說比一支支php程式去設(shè)定connection setting更快,這樣應(yīng)該也可以順便解決phpmyadmin無法正確顯示unicode中文的問題(不過amfphp到是不吃這套,一定要乖乖的自已設(shè)定語(yǔ)系才行)

 

但大部份工程師應(yīng)該都是自已寫php/jsp(SUN企業(yè)級(jí)應(yīng)用的***)程式去連線,此時(shí)自然不會(huì)讀取這個(gè)設(shè)定而繼續(xù)使用預(yù)設(shè)的語(yǔ)系 latin1。

 

 

這也正是八成來信朋友陣亡的地方。

 

 

通常我會(huì)用一個(gè)獨(dú)立的檔案來處理MySQL(和PHP搭配之***組合) connection的設(shè)定,例如:

 

  1. PLAIN TEXT  
  2. <? 
  3. //database connection details.  
  4. $host = "localhost";  
  5. $link = MySQL(和PHP搭配之***組合)_connect($host, "xxx", "xxx");  
  6. MySQL(和PHP搭配之***組合)_query("SET NAMES 'utf8'");  
  7. MySQL(和PHP搭配之***組合)_select_db("your_table_name_here", $link);  
  8. ?>  

請(qǐng)注意在MySQL中文亂碼(和PHP搭配之***組合)_connect后第五行的地方有加上一個(gè)"set names 'utf8' "的指令,告訴MySQL(和PHP搭配之***組合)這個(gè)connection之后的連線內(nèi)容都要使用utf8,經(jīng)過這樣設(shè)定后,通常就可以解決大部份問題。

從這里也可以推想得知,如果你有用某種custom connection pooling機(jī)制,就要記得在每次建立新的connection后立即設(shè)定為utf8。

這組設(shè)定經(jīng)過幾天的反覆測(cè)試(使用中文繁、簡(jiǎn)、日文、韓文)后已經(jīng)證實(shí)完全不會(huì)有亂碼或是某些字變成"口"。

例子:試者輸入這幾個(gè)字「不道可否啰」如果它們能正確進(jìn)入MySQL(和PHP搭配之***組合)再被讀出來,那就是中文沒問題了,如果讀出來后變成『口』字那就是革命還未成功同志仍需努力...orz。

 

 【編輯推薦】

  1. MySQL查詢高速緩沖have_query_cache不得不看
  2. MySQL數(shù)據(jù)庫(kù)的同步實(shí)例的實(shí)際操作
  3. 修改MySQL root密碼5步驟介紹
  4. 提高M(jìn)ySQL連接數(shù),很簡(jiǎn)單
  5. 獲得MySQL運(yùn)行報(bào)告,并不難
責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-05-31 10:45:09

MySQL+tomca

2010-05-28 18:05:22

jsp MySQL

2010-06-07 09:22:21

MySQL+PHP亂碼

2010-05-14 17:27:40

MySQL中文亂碼

2009-11-30 11:01:20

MySQL與PHP產(chǎn)生

2010-05-19 15:59:30

MySQL 中文亂碼

2010-05-17 14:49:43

MySQL中文亂碼

2011-08-08 10:29:12

MySQL

2010-05-27 12:49:30

MySQL中文亂碼

2009-06-25 15:06:20

Javadoc亂碼

2024-11-08 13:47:35

中文亂碼配置

2010-05-12 16:47:54

MySQL 中文亂碼

2010-11-09 17:09:23

SQL Server中

2010-06-12 11:19:59

MySQL中文亂碼

2009-07-02 13:32:56

JSP中文亂碼

2010-05-31 18:33:00

MySQL中文亂碼

2010-05-24 11:17:41

MySQL數(shù)據(jù)庫(kù)

2009-02-25 15:39:15

亂碼原理MySQL

2011-12-21 14:46:26

JavaJFreeChart

2009-11-26 16:30:52

Suse中文亂碼問題
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)