输入不正确UTF-8,表示编码!字节:0xA0 0x20 0x42 0x72 in - 谷歌地理编码器

时间:2012-01-30 00:38:51

标签: php xml google-maps

你能帮我解决这个问题吗?我有一个包含地理编码地址的大清单,它不断给出这个错误:

  

警告:simplexml_load_file()[function.simplexml-load-file]:   http://maps.google.com/maps/geo?output=xml&key=KEY&q=928+Broadway%A0+Brooklyn%2C+11206+%2C+:3:   解析器错误:输入不正确UTF-8,表示编码!字节:   

中的0xA0 0x20 0x42 0x72

有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:0)

您的输入不是UTF-8文档。 0xA0将是2到4字节序列的后续字节(0xA0是10100000,所有初始字节都以11开头,所有单字节字符都以零开头),但是这里是显示为前导字节。

这可能意味着您的文档已损坏(根据XML定义,形式不正确)或使用代码页创建(或者,非常不可能,UTF-16)。

您必须通知XML解析器如何翻译0-128 ASCII范围之外的字符,或者根据需要删除错误的字节序列。

另一种方法是使用更耐受的解析器,例如Beautiful Soup。

你应该很高兴得到错误信息 - 唯一可能发生的事情就是沉默腐败。

答案 1 :(得分:0)

您应该切换到Google Maps API Geocoding Web Service。您的请求看起来像这样:

http://maps.googleapis.com/maps/api/geocode/xml?address=928+Broadway+Brooklyn+11206&sensor=true&key=KEY

答案 2 :(得分:0)

错误是由%A0引起的,对于非中断空间,它是Latin-1。对于英语,用空格替换它可能就足够了(编码为+);这里可以删除。

你也可以utf8_encode($city)