一張保單輕鬆享有人生各階段風險保障 通通幫您規畫好 | 您還敢使用滿是變種細菌的電話通話嗎 請定期電話清潔消毒, |
解決 php+mysql 許功蓋等字變亂的問題 |
房東:天使 發表時間:2007-02-12 |
方法一【確定 MySQL 預設的字元集:】 1. 打開 WinMySQLadmin 管理畫面(在視窗右下角狀態列紅綠燈圖示中按滑鼠右鍵,點選 Show me 選項)。 2. 點選管理畫面中 [Variables] 標籤選項,其中character_set變數就是您預設字元集的變數,其預設是 latin1 字元集(我們要將他改回 big5),而 chatacters_set 變數則是 MySQL 可以支援哪些字元集。【修改預設字元集變數 character_set: 】 1. 請點選管理畫面中 [my.ini Setup] 標籤選項,設定 my.ini。 2. 按一下 [Pick-up and Edit my.ini values] 按鈕,以便編輯目前的 my.ini 設定。 3. 在 [mysqld] 設定區塊底下新增一行 default-character-set = big5 變數設定 4. 新增一個 [client] 設定區塊,並加入第三步驟的變數設定(游標往下移到空白處,新增兩行 [client] 和 default-character-set=big5)。 5. 按一下畫面左下方 [Save Modification] 按鈕儲存設定。 6. 重新啟動 MySQL 或 Windows 方法二 Server端注意事項 php.ini 中,有關的設定為(預設值) ; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = On ; Use Sybase-style magic quotes (escape ' with '' instead of '). magic_quotes_sybase = Off Client端注意事項 1.中文資料送進 mysql 前,請用 addslashes($str) 處理 2.處理後,送進 mysql 時,請用 '' 括起來,並在參數後留一個空白,如 $sql = "UPDATE ezf_table set tablename='$tname ', tableend='$endtime', table inguser='$tguser ', tableingid='$tguserid', tableallnumber='$tnumber', tableloca l='$tablelocal', tableanyone='$tableopen', tabletext='$ttext ' WHERE tableid='$t ableid'"; tablename='$tname ' c. 取出時,請用 stripslashes($str) |
|
廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲 完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心! 廣利不動產-新板特區指名度最高、值得您信賴的好房仲 您的托付,廣利用心為您服務 |
1 樓住戶:天使 發表時間:2007-02-12 |
其實許功蓋的問題我已經在舊版的mysql4.0.x完全解決了,舊版的語系預設是latin1,dump或存入資料表都不會有問題。本來以為連許功概都不是對手,這樣就天下太平。沒想到,最近申請了新的虛擬主機,mysql是4.1.x版的,支援多國語系編碼,網路上大部份的文章都是教如何把舊版的latin1編碼資料轉成utf8到新版的mysql上。 假設我的舊網站程式檔有1000個,用converzt轉成utf8,沒問題,但是所有程式都有對許功蓋做addslash或stripslash的動作,要全部去修改,不太可能吧。所以不得已就不能用utf8了,還是要在新版mysql用latin1編碼,先將mysql的環境設定成latin1,匯入時編碼選項選latin1即可成功匯入,看似天下又再度太平了~~~ 實則不然,以後要轉移資料庫時會不會遇到問題?ok先把資料表用phpmyadmin(虛擬主機只能這樣做)dump出來,打開.sql一看,所有中文都變成亂碼,再匯回去,果然失敗。 所以我的問題就是,如果一定要在新版mysql4.1.x上用latin1,要如何備份資料庫才不會出錯呢? Posted by: axis 發表於 February 17, 2006 08:17 AM 嗯... 我的也是 mysql 4.1 耶 之前做這些動作的時候沒想到新版支援雙字元 encoding 的問題,所以還是當作舊的用,default encoding 是 latin1•我一直都用 mysqldump 在處理,都沒遇到問題 不過剛剛聽你說之後裝了 phpmyadmin 來玩玩看,結果真的如你說的一樣出來一堆亂碼,感覺是 phpmyadmin 帶塞 找了一下資料,要嘛修改新版 phpmyadmin 的 mysql client charset,要嘛裝舊的 (我試了 2.5.6),就可以順利 dump 出來了 不過 insert 我沒試過,你再試試看囉 Posted by: cclien 發表於 February 17, 2006 09:28 AM 疑,你不是已經改用utf8了,那怎麼mysql語系還是用latin1呢? mysql4.0時,那時是把utf8存到latin1的mysql裡,表面上看來沒有問題,但是當要升級到4.1時,網路上的文章說會有問題,因為以前雖能用,但不是真正的utf8,只是碰巧latin1也可以處理大多數的utf8字元,所以相安無事 到了4.1,當你想用真正的純UTF8時,把4.0DUMP出來的資料匯進去一定失敗,要處理過才行。你可能在4.1上面設LATIN1,所以可以匯入成功,但是這仍然不是真正的UTF8。 所以我猜: 1.現在可以DUMP出來資料,但匯回去時會失敗 2.在網路上的一些UTF8版開放軟體,可能無法安裝,因為這些 軟體都是把UTF8的文字寫入UTF8的資料庫中,而你還是用LATIN1,所以硬寫進去會出問題 3.未來可能預到的問題是,假設有一天你要把BLOG轉到另一台主機上,該台主機內已有其他UTF8的程式,資料庫也是用UTF8, 那該會轉不過去的,畢竟你用的是LATIN1的UTF8,不是真正的UTF8 Posted by: axis 發表於 February 17, 2006 03:23 PM 哈 將就著用咩,其實我的主要目的是能以 utf-8 顯示而已 DB 的 charset 感覺是沒甚麼差,反正 php 裡面也是以類 latin1 的方式處理 有空再來轉成正 utf-8 XD |
姓名: | |||
佈告內容: | |||
其他選項: | |||
|