作者foxzgerald (Algorithms)
看板PHP
標題Re: [請益] 網頁改UTF8 MYSQL改UTF8卻亂碼 (附圖)
時間Sun Oct 10 12:19:28 2010
※ 引述《kingmin (高手)》之銘言:
: ※ 引述《buganini (霸格尼尼)》之銘言:
: : 如果你用phpmyadmin看資料庫內容都正確的話
: : 沒意外的話應該本來就是囉
: : 這樣看起來是資料庫存UTF-8, 網頁用Big5
1F:推 SmallBeeWayn:你確定不是CurlRequest的問題?10/09 23:45
: 這CURL應該跟網路上找的道程式碼的差不多
: class CurlRequest{
: // .... 略 ....
: "Accept: */*",
: "Accept-Language: ru-ru,ru;q=0.7,en-us;q=0.5,en;q=0.3",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^....
(A)
: "Accept-Charset: UTF-8,windows-1251;q=0.7,*;q=0.7",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ....
(B)
: "Keep-Alive: 300");
我的看法和 S大一樣,如果資料庫設定都沒問題,
那可能資料源(CurlRequest)有問題。
(A) 的部分可能跟目前的問題比較無關,我只是好奇為啥你要設定 ru (俄文?)
(B) 的部分關聯性大一點,curl我不熟但看到這行我有個疑問:你確定抓到的資料是
UTF-8 的編碼而不是 Big5 的編碼? 非 UTF-8 的資料不會被過濾掉?
x x x
你寫的程式在資料處理流程上應該可以分成三個階段
[資料源(其他網頁)] ==> [PHP程式(CurlRequest)] ==> [資料庫(mysql_insert)]
你之前幾篇文章檢查的好像只有後面兩個階段,也就是只有確認自己寫的 PHP是用
UTF-8 編碼、與資料庫間的通訊用 UTF-8、以及與資料庫儲存資料的格式是UTF-8
如果這部分你確定都是正確的,那兇手可能在前一站:資料源的擷取
如果資料源是 big5 之類的,往後的流程中除非你有明確轉換編碼,不然那些資料
不會自己變成 utf8。我想你可以試試看先判定資料源是否是為 utf8,如果不是的
話,可以用 iconv 之類的涵式轉換編碼
good luck
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.255.7.86
2F:→ buganini:AB都是送爽的 server side想送big5還是可以收 最後有* 10/10 16:29
3F:→ kingmin:資料源是 big5的,我一直以為他會自己變成 utf8。 10/10 20:45
4F:→ kingmin:原來還要自己做轉換編碼的動作......了解 我在試試 10/10 20:46
5F:推 buganini:其實你set names big5之後mysql就會幫你轉 10/10 23:22
6F:→ buganini:除非你有其他utf-8資料會出現在query裡面 不然這樣就好了 10/10 23:23
7F:推 kingmin:我現在從CURL抓到的資料都要big5轉utf8才能存入MYSQL 10/11 22:43
8F:→ kingmin:這樣就沒有錯了 不過有些許工蓋 不知要怎麼解決??? 10/11 22:44