Python 2.7 将特殊字符转为utf-8 byes

Python 2.7 convert special characters into utf-8 byes

我有一些字符串需要替换成 URL 以访问不同的 JSON 文件。我的问题是有些字符串有特殊字符,我只需要这些作为 UTF-8 字节,所以我可以正确找到 JSON tables.

一个例子:

# I have this string
a = 'code - Brasilândia'

#in the JSON url it appears as
'code%20-%20Brasil%C3%A2ndia'

我设法使用 urllib.quote() 正确转换了空格,但它没有转换我需要的特殊字符。

print(urllib.quote('code - Brasilândia))
'code%20-%20Brasil%83ndia'

当我在 URL 中替换它时,我无法到达 JSON table。 我设法在字符串 u'code - Brasilândia' 之前使用 u 来完成这项工作,但这并没有解决我的问题,因为该字符串最终将成为用户输入,并且需要不断更改。 试了好几种方法都得不到我想要的结果

我专门为这个项目使用 python 2.7,我无法更改它。

有什么想法吗?

您可以尝试将字符串解码为 UTF-8,如果失败,则假定它是 Latin-1,或您期望的任何 8 位编码。

try:
    yourstring.decode('utf-8')
except UnicodeDecodeError:
    yourstring = yourstring.decode('latin-1').encode('utf-8')
print(urllib.quote(yourstring))

...前提是你能建立正确的编码; 0x83 似乎仅在一些相当模糊的遗留编码中对应于 â,例如代码页 437 和 850(这些是 最不模糊的 )。另见 https://tripleee.github.io/8bit/#83 (披露:链接网站是我的)。

演示:https://ideone.com/fjX15c