作者Stelle (今夜星光燦爛)
看板PHP
標題[請益] 如何在Google Maps用utf8正確顯示中文
時間Tue Jul 10 11:56:16 2012
最近在嘗試 "PHP/MySQL搭配Google地圖" 這個範例
https://developers.google.com/maps/articles/phpsqlajax?hl=zh-tw
試到
'使用 PHP 的 DOM 函式來輸出 XML' 這小節就卡關了;
我的問題是,範例裡面說:
"如資料庫包含國際性字元或者您需要強制產生 UTF-8 輸出,
就可以在輸出的資料上使用 utf8_encode"
但確切來說,應該如何使用utf8_encode這個函式呢?
我目前的做法如下:
1. 修改範例檔"phpsqlajax_genxml3.php"的這幾個部份:
(1) 修改前:$dom = new DOMDocument("1.0");
修改後:$dom = new DOMDocument("1.0"
, "UTF-8");
(2) 修改前:header("Content-type: text/xml");
修改後:header("Content-type: text/xml
; charset=UTF-8");
(我把這行移到程式碼開頭附近的
<?php下一行,不知有無影響;
另外我也不懂,為什麼範例檔要將header放到程式碼中間的部份,
是否有特殊用意?)
(3) 修改前:$newnode->setAttribute("name",$row['name']);
修改後:$newnode->setAttribute("name",
utf8_encode($row['name']));
(address那行亦同)
2. 將phpmyadmin的markers資料表,其中name跟address的校對欄,
都設定為
utf8_unicode_ci
這麼做了之後,我從瀏覽器呼叫"phpsqlajax_genxml3.php"
顯示出來的name和address資料都還是亂碼;
另外,我是用notepad++編輯的,而當程式碼是ANSI或UTF-8 without BOM格式時
就是前面的情況,XML輸出是亂碼;
但當程式碼是UTF-8格式時,瀏覽器顯示錯誤如下:
Cannot modify header information - headers already sent by(php程式碼第一行)
不知上面做法是否有誤?
或者還有哪些需要檢查的地方呢?
還請各位指教,謝謝!
==
註:前面貼的中文範例連結,用的是Google Maps Api v2(要用金鑰)
https://developers.google.com/maps/articles/phpsqlajax?hl=zh-tw
英文版的範例連結,用的則是v3版
https://developers.google.com/maps/articles/phpsqlajax_v3
不過就xml輸出的部份,兩者似乎差異不大
提供大家參考
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.250.52.44
※ 編輯: Stelle 來自: 111.250.52.44 (07/10 12:00)
1F:→ kuAIpAI:有丟水球給你 要問妳更詳細的問題~ 但是妳沒有回應 囧~ 07/11 00:25
2F:→ kuAIpAI:就以我看你目前問題 就只是編譯器的編碼問題較大 07/11 00:25
3F:→ kuAIpAI:以我接觸google的東西 他基本上都應該都是UTF-8格式了 07/11 00:26
4F:→ kuAIpAI:如果是我 我會直接用PHP的Function 去拆解XML 檔案 07/11 00:26
5F:→ kuAIpAI:直接去應用 而不輸入進去資料庫多那步驟 07/11 00:27
6F:→ tkdmaf:我只能說,google的範例寫得太囉唆。 07/11 08:04
7F:→ tkdmaf:之前在用的時候我把code整理到最後剩沒多少東西。 07/11 08:05
8F:→ Stelle:k大 不好意思我不太用水球 謝謝你的回應! 如果是編譯器 07/11 09:18
9F:→ Stelle:的問題 是否代表我應該用用其他編輯軟體試試?另外,不太 07/11 09:18
10F:→ Stelle:清楚"直接用PHP的Function拆解XML"是什麼意思 因為我資料 07/11 09:19
11F:→ Stelle:都已經在資料庫裡面了 現在問題是要把東西撈出來~ 07/11 09:19
12F:→ Stelle:也謝謝t大的分享 但我是新手所以只能乖乖照範例跑 07/11 09:20
13F:→ kuAIpAI:我的意思是 直接用PHP內建 例如simplexml_load_file(); 07/11 10:30
14F:→ kuAIpAI:直接去抓取我們要的資料來解析 例如要在地圖上插搓點 07/11 10:30
15F:→ kuAIpAI:就只要有經緯度 兩個數據應該就可以插上一個搓點~ 07/11 10:30
16F:→ kuAIpAI:如果是剛入門 你就先把資料 他有那資料庫語法把他插入db 07/11 10:31
17F:→ kuAIpAI:在用 資料庫連線把資料撈出來 二選一 因為通常是資料庫 07/11 10:31
18F:→ kuAIpAI:比較容易遇到 編碼問題~ 因為你描述的我還是猜不太中是哪 07/11 10:32
19F:→ kuAIpAI:裡設定沒有設定好編碼XDDD 但是應該在重複檢查一下 別急~ 07/11 10:32
20F:→ Stelle:好的,真的很謝謝k大的細心解釋,我再試試看好了,感謝! 07/12 00:29
21F:推 RedMapleWing:編輯器問題表示你開文件時的編碼 07/12 16:11
22F:→ RedMapleWing:notepad++預設就不是big5或utf-8 07/12 16:11
23F:→ RedMapleWing:dreamweaver中文預設好像是big5 07/12 16:12
24F:→ RedMapleWing:文件編碼先不對了,你裡面怎麼調編碼都沒用 07/12 16:12
25F:→ RedMapleWing:至於你編輯器預設文件編碼…就要自己去看了 07/12 16:12
26F:→ RedMapleWing:ps:eclipse跟netbeans的預設也不是utf8喔… 07/12 16:12