Skip to main content
 首页 » 编程设计

python之与 Python 中的 unicode 混淆

2025年05月04日14kenshinobiy

作为 Django 站点的一部分,用户可以输入街道名称,该条目将添加到谷歌地图地理编码链接中。一切正常,直到用户输入特殊字符。

我想在链接中显示特殊字符,但是 python 将该字符替换为 unicode 符号。 有没有办法阻止 python 切换到 unicode 并简单地接受用户输入?我尝试了几种解码器和格式,但没有解决问题。

编辑:代码是用 Python 2 编写的。

我目前请求的 JSON 响应如下:

    url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + 
          addressString.decode('ascii') + "&sensor=false"; 
    googleResponse = urllib.urlopen(url); 

感谢您的帮助和建议。

请您参考如下方法:

首先,检查 addressString 是否为 Unicode 对象(如果您使用的是 Python 3,或者 type(addressString) 是否显示“unicode”)。如果是,那么您可能需要尝试以下操作:

url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + 
      urllib.quote(addressString.encode('utf-8')) + "&sensor=false"; 

如果 addressString 是(非 unicode)字符串对象(在 Python 2 中)或字节对象(在 Python 3 中),则它必须已经用 UTF-8 编码。在这种情况下,请尝试以下操作:

url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + 
      urllib.quote(addressString) + "&sensor=false"; 

这两个片段都应使用 % 符号将 unicode 字符转换为 URL 转义序列。这是在 URL 中使用非 ASCII 字符的标准方式。现代浏览器应该解码这些序列,将它们显示为 Unicode 字符。