作者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