[請益] php to mysql 中文.....

看板PHP作者 ( MIT I'm comming!)時間13年前 (2012/06/14 20:46), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/1
爬很久的文...還是無解 ---------------------------------------------- 目前從資料庫中抓出來中文是沒有問題的 看得到中文 問題卡在 用php 執行 INSERT 這個動作 mysql_query("INSERT INTO `tableA` (`a`) VALUES ('中文')"); 執行之後會是空白(或許是..看不到的亂碼) 在phpmyadmin中就是看不到值 但用phpmyadmin 內建的sql 則能成功插入 "中文" 兩字 同一個網站 另一個插入功能語句 mysql_query("INSERT INTO `tableB` (`b`) VALUES ('中文')"); (原本會出現亂碼 已爬文解決) 我在想會不會是透過 flash urlrequest的問題? 但是 用error_log可以log到正確的query string: "INSERT INTO `tableA` (`a`) VALUES ('中文')" 也就是說...問題應該是php 這段 對了!編碼確定都是utf8 collation 則是 utf8_general_ci 不曉得各位有什麼看法?? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.98.153

06/14 21:56, , 1F
檔案編碼、SET NAMES
06/14 21:56, 1F
似乎有點頭緒了 這原本的資料 是用 ISO-8895-1 編碼 而mysql接受的是utf8 但另一個問題來了... 要如何把以ISO-8895-1編碼的中文 轉換成 utf 編碼的中文呢? 我查到用utf8_encode 轉出來的結果是亂碼@@ ※ 編輯: linces 來自: 114.37.98.153 (06/14 22:16)

06/14 22:19, , 2F
中文怎麼會是ISO-8859-1編碼…
06/14 22:19, 2F

06/14 22:20, , 3F
先確定你的檔案是存成UTF-8,mysql連線後有執行
06/14 22:20, 3F

06/14 22:20, , 4F
SET NAMES UTF8,其他的再說
06/14 22:20, 4F
嗯嗯~很怪 我用 mb_detect_encoding($s, "ISO-8859-1, UTF-8, BIG5"); 她return 的值就是 ISO-8859-1 用notepad開可以看到中文 用ultraedit有時候是亂碼... 看起來應該是送來的值沒有預先編碼 有辦法在PHP 救回嗎? ※ 編輯: linces 來自: 114.37.98.153 (06/14 23:41)

06/15 00:01, , 5F
ISO-8859-1的定義包含\x1~\xff 也就是說任何binary
06/15 00:01, 5F

06/15 00:01, , 6F
string都可以當作iso-8859-1 (也就是為何有人會用latin1
06/15 00:01, 6F

06/15 00:01, , 7F
在mysql裡面存UAO的原因)
06/15 00:01, 7F

06/15 00:02, , 8F
找個可以選擇編碼的editor或乾脆用browser就可以檢查了
06/15 00:02, 8F
呵呵呵~解決了~開心^^ 原因是.........很蠢我承認 我用url傳中文參數 忘了加 urlencode.... ※ 編輯: linces 來自: 114.37.98.153 (06/15 00:16)

06/15 00:18, , 9F
不論如何~還是感謝樓上的方法 ~ ^^
06/15 00:18, 9F
文章代碼(AID): #1FsTqSuv (PHP)
文章代碼(AID): #1FsTqSuv (PHP)