你能帮我解决这个问题吗?我有一个包含地理编码地址的大清单,它不断给出这个错误:
警告: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
有没有办法解决这个问题?
答案 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)
。