繁体   English   中英

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

[英]Python 2.7 convert special characters into utf-8 byes

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

一个例子:

# 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 表。 我设法在字符串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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM