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
(披露:链接网站是我的)。
我有一些字符串需要替换成 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 (披露:链接网站是我的)。