【網路開店購物網站架設】教學 課程 + 技術諮詢 每年超過2000億的『網路購物市場』在網路上等待您去賺! 打造很賺錢的購物網站 →您需要有一套完整的課程與技術顧問諮詢! 史上真正頭一遭 ! 由購物網站架站教學基地【總教頭】所釋出的獨門技術密技 ! 參加了本秘技課程,您無須再自我摸索曠日廢時→快速打通任都二脈 全部課程有售後註冊諮詢及密訓基地,學成後你就是:購物網站的頭家! 你不用每星期跑補習班,趕著時間跟老師上課! 百分之百的上課實際操作錄製的教學影片! 購物網站架站不必再求人! 不必網路搜尋找不到適合的購物網站架站軟體及架站教學! 不論您是學生、電腦使用者、美工、或是一般民眾,不論您是從事那一種行業都適合! 只要您有購物網站架站需求,或是您有心想精修這個領域,您都絕對需要這份函授課程! 購買本課程享有長達一年的技術諮詢與服務!

資料庫 mysql 的中文亂碼解決【保証成功】專案

在架站技術中常常有來信詢問各種 mysql 中文相容的問題。

資料庫mysql中文亂碼的原因不外乎下列幾點:

☆‧mysql server本身設定問題,例如還停留在 latin1

☆‧mysql table 的語系設定問題(包括 character 與 collation)

☆‧用戶端程式(例如 php) 的連線語系設定問題

請設定 mysql server/table 的 character/collation:

接下來只需要補充幾點注意事:

◎、mysql中文亂碼必勝解決法:

1、mysql 啟動時會讀取一個預設的 config 檔,一般名稱為 my.ini,而它會到下列兩位置去尋找這個檔案:

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

注意不同位置裏的檔案suffix不一樣,這點在之前的文章中沒有特別強調,因此那時我是用更複雜的方法直接重新將mysql 註冊到 service裏面,並在那裏指定 my.ini的位置。

2、my.ini 裏的內容為:

[mysqld]
default-character-set=utf8

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

其中 mysqld 是指定 server啟動時要用的語系,但如果這裏設定為 utf8可能會讓許多英文軟體不開心,例如 osCommerce/mediaWiki,所以這裏建議設成 latin1。

下面的 client 則是設定當 client 連線時要使用什麼語系,但可惜的是這個設定不是每個client都會鳥它,基本上只有 mysql 自已家的程式,例如 mysql.exe, mysqld.exe, mysqladmin.exe 或是 MySQL Control Center這種程式會去讀取這個設定檔然後改用 utf8 連線。

在此提供第二行指令,比一支支php程式去設定connection setting更快,這樣應該也可以順便解決phpmyadmin無法正確顯示 unicode 中文的問題(不過 amfphp 到是不吃這套,一定要乖乖的自已設定語系才行)

但大部份專案師應該都是自已寫 php/jsp 程式去連線,此時自然不會讀取這個設定而繼續使用預設的語系 – latin1。

這也正是大部分網友陣亡的地方。

可以用一個獨立的檔案來處理 mysql connection的設定,例如:

PLAIN TEXT
PHP:

<?
//database connection details.
$host = "localhost";
$link = mysql_connect($host, "xxx", "xxx");
mysql_query("SET NAMES 'utf8'");
mysql_select_db("your_table_name_here", $link);
?>

請注意在 mysql_connect後第五行的地方有加上一個 "set names 'utf8' "的指令,告訴mysql 這個 connection 之後的連線內容都要使用utf8,經由這樣設定後,通常就可以解決大部份問題。

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

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

例子:試者輸入這幾個字「不道可否囉」如果它們能正確進入mysql再被讀出來,那就是中文沒問題了,如果讀出來後變成『口』字那就是革命還未成功同志仍需努力…orz

當然我也順便檢查了 flex2 – amfphp – php – mysql 來回傳resultset 也不再會有中文亂碼問題,可以安心使用囉。