亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

完美解決mysql中文亂碼的問題

添加時間:2012-11-17 17:33:59  添加: 思海網絡 
MySQL(和PHP搭配之最佳組合)中文亂碼的原因

MySQL(和PHP搭配之最佳組合)會出現中文亂碼的原因不外乎下列幾點:

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

-MySQL(和PHP搭配之最佳組合) table的語系設定問題(包含character與collation)

-客戶端程式(例如php)的連線語系設定問題

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

接下來只需要補充幾點注意事:
*MySQL(和PHP搭配之最佳組合)中文亂碼必勝解決法

1、MySQL(和PHP搭配之最佳組合)啟動時會讀取一個預設的config檔,一般名稱為my.ini,而它會到下列兩位置去尋找這個檔案:

C:\windows\my.ini也就是作業系統的安裝目錄,也有可能是C:\winnt\my.ini
C:\:my.cnf也就是C disk的根目錄

注意不同位置里的檔案suffix不一樣,這點在之前的文章中沒有特別強調,因此那時我是用更復雜的方法直接重新將MySQL(和PHP搭配之最佳組合)注冊到service里面,并在那里指定my.ini的位置。
 
2、my.ini里的內容為:
[MySQL(和PHP搭配之最佳組合)d]
default-character-set=utf8

[client]
default-character-set=utf8
init_connect='SET NAMES utf8'

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

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

note:感謝b6s桑熱情相助提供第二行指令,據說比一支支php程式去設定connection setting更快,這樣應該也可以順便解決phpmyadmin無法正確顯示unicode中文的問題(不過amfphp到是不吃這套,一定要乖乖的自已設定語系才行)
 
但大部份工程師應該都是自已寫php/jsp(SUN企業級應用的首選)程式去連線,此時自然不會讀取這個設定而繼續使用預設的語系- latin1。
 
這也正是八成來信朋友陣亡的地方。
 
通常我會用一個獨立的檔案來處理MySQL(和PHP搭配之最佳組合) connection的設定,例如:
PLAIN TEXT
<?
//database connection details.
$host = "localhost";
$link = MySQL(和PHP搭配之最佳組合)_connect($host, "xxx", "xxx");
MySQL(和PHP搭配之最佳組合)_query("SET NAMES 'utf8'");
MySQL(和PHP搭配之最佳組合)_select_db("your_table_name_here", $link);
?>

請注意在MySQL(和PHP搭配之最佳組合)_connect后第五行的地方有加上一個"set names 'utf8' "的指令,告訴MySQL(和PHP搭配之最佳組合)這個connection之后的連線內容都要使用utf8,經過這樣設定后,通常就可以解決大部份問題。

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

這組設定經過幾天的反覆測試(使用中文繁、簡、日文、韓文)后已經證實完全不會有亂碼或是某些字變成"口"。

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

當然我也順便驗證了flex2 - amfphp - php - MySQL(和PHP搭配之最佳組合)來回傳resultset也不再會有中文亂碼問題,可以安心使用啰。

關鍵字:mysql、PHP

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站