[請益] URI亂碼問題...

看板PHP作者 (新港解說營)時間15年前 (2010/04/16 11:13), 編輯推噓5(504)
留言9則, 2人參與, 最新討論串1/2 (看更多)
不知道能不能問一點google map api的東西, 最近想結合Mysql php googlemap,而官方有一個範例, http://code.google.com/intl/zh-TW/apis/maps/articles/phpsqlinfo.html 但是它沒考慮到用get方法傳中文字存到mysql時,造成亂碼。 http://docs.google.com/present/view?id=dd6fgr97_1453g3s68dh 因為其中用到google map api提供的GDownloadUrl(),只提供get,沒有post。 在phpsqlinfo_add.html這個網頁時,會先將使用者輸入的name、address編碼為URI (使用encodeURIComplonent) function saveData() { var name = document.getElementById("name").value; var name = encodeURIComponent(name); var address = document.getElementById("address").value; var address = encodeURIComponent(address); var type = document.getElementById("type").value; var latlng = marker.getPosition(); 然後在另一個phpsqlinfo_addrow.php用get取得每個數的值。 但是在範例就沒有進行decode去把它URI還原成UTF-8。 $name = $_GET['name']; $address = $_GET['address']; $lat = $_GET['lat']; $lng = $_GET['lng']; $type = $_GET['type']; http://docs.google.com/present/view?id=dd6fgr97_1453g3s68dh 然後筆者將上面改成這樣, $name = rawurldecode($_GET['name']; $name = mb_convert_encoding($name, "UTF-8"); $address = rawurlencode($_GET['address']); $address = mb_convert_encoding($address, "UTF-8"); $lat = $_GET['lat']; $lng = $_GET['lng']; $type = $_GET['type']; 不過這樣網頁它就無法將使用者文字存入mysql,卡住。 不知道那裡我想不清楚。 潛水很久了,初次發文,有許多不懂的地方,請多包涵。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.218.68

04/16 12:49, , 1F
直接在saveData()呼叫Ajax用post送回資料庫不就好了,連編
04/16 12:49, 1F

04/16 12:49, , 2F
碼都不用考慮
04/16 12:49, 2F

04/16 22:30, , 3F
不用decode PHP會自己幫你decode
04/16 22:30, 3F

04/16 22:31, , 4F
問題是decode出來是什麼charset encoding
04/16 22:31, 4F

04/16 22:34, , 5F
剛剛查了一下encodeURIComponent就是用utf-8
04/16 22:34, 5F

04/16 22:36, , 6F
不過你貼得圖看起來不是..
04/16 22:36, 6F

04/16 22:40, , 7F
把% replace成\然後用 iconv -f JAVA -t UTF-8去解吧
04/16 22:40, 7F

04/16 22:41, , 8F
看來有些外國人寫得資料還是不可信..XD
04/16 22:41, 8F

04/16 22:44, , 9F
PHP會自動做urldecode()但是 %uXXXX那種他不會解 的樣子
04/16 22:44, 9F
文章代碼(AID): #1BnzNdF3 (PHP)
討論串 (同標題文章)
文章代碼(AID): #1BnzNdF3 (PHP)