作者linces ( MIT I'm comming!)
看板PHP
標題[請益] php to mysql 中文.....
時間Thu Jun 14 20:46:18 2012
爬很久的文...還是無解
----------------------------------------------
目前從資料庫中抓出來中文是沒有問題的 看得到中文
問題卡在
用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
1F:→ buganini:檔案編碼、SET NAMES 06/14 21:56
似乎有點頭緒了
這原本的資料 是用 ISO-8895-1 編碼
而mysql接受的是utf8
但另一個問題來了...
要如何把以ISO-8895-1編碼的中文 轉換成 utf 編碼的中文呢?
我查到用utf8_encode
轉出來的結果是亂碼@@
※ 編輯: linces 來自: 114.37.98.153 (06/14 22:16)
2F:→ buganini:中文怎麼會是ISO-8859-1編碼… 06/14 22:19
3F:→ buganini:先確定你的檔案是存成UTF-8,mysql連線後有執行 06/14 22:20
4F:→ buganini:SET NAMES UTF8,其他的再說 06/14 22:20
嗯嗯~很怪
我用 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)
5F:→ buganini:ISO-8859-1的定義包含\x1~\xff 也就是說任何binary 06/15 00:01
6F:→ buganini:string都可以當作iso-8859-1 (也就是為何有人會用latin1 06/15 00:01
7F:→ buganini:在mysql裡面存UAO的原因) 06/15 00:01
8F:→ buganini:找個可以選擇編碼的editor或乾脆用browser就可以檢查了 06/15 00:02
呵呵呵~解決了~開心^^
原因是.........很蠢我承認
我用url傳中文參數
忘了加 urlencode....
※ 編輯: linces 來自: 114.37.98.153 (06/15 00:16)
9F:→ linces:不論如何~還是感謝樓上的方法 ~ ^^ 06/15 00:18