Python 2.7将特殊字符转换为utf8字节

2024-09-30 20:28:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将字符串替换为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实现了这一点,但这并没有解决我的问题,因为字符串最终将是用户输入,并且需要不断更改。 我试过几种方法,但都没有达到我想要的效果

我专门为这个项目使用Python2.7,我无法更改它

有什么想法吗


Tags: 文件字符串jsonurl字节havecodeurllib
1条回答
网友
1楼 · 发布于 2024-09-30 20:28:03

您可以尝试将字符串解码为UTF-8,如果失败,则假定它是拉丁语-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

相关问题 更多 >