日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
對(duì)MySQL中文亂碼的解決方案的描述

以下的文章主要是對(duì)MySQL 中文亂碼解決方案的描述,MySQL 中文亂碼在實(shí)際的應(yīng)用中是經(jīng)常出現(xiàn)的在實(shí)際的運(yùn)行中帶來(lái)很多的不便,以下的文章就是介紹MySQL 中文亂碼解決方案。

創(chuàng)新互聯(lián)公司主營(yíng)集安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開(kāi)發(fā),集安h5成都小程序開(kāi)發(fā)搭建,集安網(wǎng)站營(yíng)銷(xiāo)推廣歡迎集安等地區(qū)企業(yè)咨詢(xún)

過(guò)去幾個(gè)月就不斷有來(lái)信詢(xún)問(wèn)各種MySQL(和PHP搭配之***組合)中文相容的問(wèn)題,所以有機(jī)會(huì)看到許多玩家們用的各式連接法與程式,實(shí)在太開(kāi)眼界。

最近因?yàn)檗D(zhuǎn)換到flex 2做為開(kāi)發(fā)平臺(tái)并重寫(xiě)一些產(chǎn)品,許多去年寫(xiě)的framework就無(wú)法使用,而其中有部份專(zhuān)門(mén)處理多國(guó)語(yǔ)系的library也隨之失效,導(dǎo)致我得重新面對(duì)這個(gè)問(wèn)題,所以正好籍此機(jī)會(huì)將一些新心得整理出來(lái)。

MySQL(和PHP搭配之***組合)MySQL 中文亂碼的原因

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

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

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

-客戶(hù)端程式(例如php)的連線(xiàn)語(yǔ)系設(shè)定問(wèn)題

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

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

MySQL(和PHP搭配之***組合)MySQL 中文亂碼必勝解決法

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

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

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

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

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

[MySQL(和PHP搭配之***組合)d]

 
 
 
  1. default-character-set=utf8 
  2. [client]  
  3. default-character-set=utf8 
  4. init_connect='SET NAMES utf8' 

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

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

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

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

這也正是八成來(lái)信朋友陣亡的地方。

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

 
 
 
  1. PLAIN TEXT 
  2. //database connection details. 
  3. $host = "localhost"; 

$link = MySQL(和PHP搭配之***組合)_connect($host, "xxx", "xxx");

MySQL(和PHP搭配之***組合)_query("SET NAMES 'utf8'");

MySQL(和PHP搭配之***組合)_select_db("your_table_name_here", $link);

?>

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

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

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

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

當(dāng)然我也順便驗(yàn)證了flex2 - amfphp - php - MySQL(和PHP搭配之***組合)來(lái)回傳resultset也不再會(huì)有MySQL 中文亂碼問(wèn)題,可以安心使用啰。


當(dāng)前標(biāo)題:對(duì)MySQL中文亂碼的解決方案的描述
URL鏈接:http://m.5511xx.com/article/cosgjgp.html