[MySQL] MySQL 4.1 抓取 big5 編碼資料的方法

MySQL 4.1 之後已經把 utf-8 作為預設編碼,如果把 4.0.x 的資料放入 4.1 的資料庫,抓出來的資料不是亂碼就是一堆問號 ?? 。

尤其在租用虛擬主機的狀況下,my.ini 完全不在自己手裡,這時程式的修改是一定要的,只是要怎麼做最不花時間。


這時只要在 MySQL 連線後(也就是下 SQL 指令之前),加一行指定編碼的 SQL 即可,如紅字部份所示:

$link = mysql_connect("mysql.abc.com.tw", "test", "test");
$db = mysql_select_db("mysql_41", $link);
$charset = mysql_query("SET NAMES 'big5'", $link); 
$query = mysql_query("SELECT * FROM Test" , $link);

這個 SET NAMES ‘big5’ 就是代表:

SET character_set_client = big5;
SET character_set_results = big5;
SET character_set_connection = big5;

如果想知道這三個參數代表的意義,可以參考:

http://dev.mysql.com/doc/mysql/en/charset.html

9 comments On [MySQL] MySQL 4.1 抓取 big5 編碼資料的方法

  • 最近也嘗試將access+asp 換成asp+mysql,但是因為用國內英語虛擬主機,中文輸入都變成???? ,search Google,and mysql site也試用php改變table charset屬性,但都不成功,偶爾間看到你的blog有相關文章,希望試試看可否找到答案,如果方便可否看看我的php code,問題在那裡.先謝謝了.
    —-

    —-
    largo

  • 我看你的 code 並未照我寫的做呀。

  • 我只想在php的環境下change table’s charset & collation ,而實際執行程式是用asp(比較習慣),你的code是否是每一次php連線時改變charset & collation,實際table並沒有更改?(抱歉!我不是專業programer)
    ps是否ODBC連線也可改為你的方式更改charset?

  • 文章提到的方法是用 SQL Command ,不是 Connection String.

  • Neo 你好,

    先說聲抱歉,想跟你詢問問題,因為不曉得從哪邊發問,
    所以擅自決定在這邊寫迴響發問,請見諒。

    想請問你的 BLOG 是否有WYSIWYG editor,
    且是否有提供 [source]..[/source]
    方便讓我在網誌內文插入程式碼,
    類似你這篇網誌內文黑色底那一區塊那樣,
    我申請了Google 的 Blogger 跟 國內的天空部落,
    實際測試都沒有支援[source]..[/source]的標籤,
    想問問你是否知道哪家Blog 或那個blog 套件有呢??

  • Huang:

    我的 Blog 沒有,WYSIWYG editor,但是 pLog 有。

    [source]..[/source]是 BBCode,並不見得每家都有支援。

    有需要那個功能的話,用 HTML 的<pre>…</pre> 應該就可以了吧。

  • 詳細應在那處加入這段
    $charset = mysql_query(“SET NAMES ‘big5′”, $link);
    如在mysql資料庫的sql內新增好像不行

  • 在import data 入新 database 時, 要不要set 那個charset??

  • 請問倘若我是用MySQL ODBC Driver從MSSQL轉到MySQL
    而出現亂碼又該和解?
    我大概能確定的是在MSSQL資料表的中文是BIG5碼
    但我在MySQL資料表的規劃是要UTF8
    請問可以在轉的過程中改成UTF8再存入嗎

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar