Python 2.7 编码给出了错误的日文汉字值
作为scraper的一部分,我需要对URL进行编码,但我甚至无法从一个简单的符号中获得正确的输出,而且我目前被我迄今为止从各种堆栈溢出帖子中尝试的所有内容所蒙蔽 文档设置为UTF-8Python 2.7 编码给出了错误的日文汉字值,python-2.7,cjk,Python 2.7,Cjk,作为scraper的一部分,我需要对URL进行编码,但我甚至无法从一个简单的符号中获得正确的输出,而且我目前被我迄今为止从各种堆栈溢出帖子中尝试的所有内容所蒙蔽 文档设置为UTF-8 sampleText=u'ル' print sampleText print sampleText.encode('utf-8') print urllib2.quote(sampleText.encode('utf-8')) 它给了我价值观: ル ル %E3%83%AB 但据我所知,它应该给我: ル X
sampleText=u'ル'
print sampleText
print sampleText.encode('utf-8')
print urllib2.quote(sampleText.encode('utf-8'))
它给了我价值观:
ル
ル
%E3%83%AB
但据我所知,它应该给我:
ル
XX
%83%8B
我做错了什么?是否有一些设置我没有正确的?因为据我所知,
encode()
的输出不应该是Þƒ«
您显示的代码工作正常。字符ル代码>是片假名字母RU
,是Unicode码点U+30EB
。当编码为UTF-8时,您将通过testring'\xe3\x83\xab'
获得Python,如果您的控制台编码为Latin-1
,它将打印为ル/code>。当您对这三个字节进行URL转义时,将得到%E3%83%AB
您似乎期望的值,%83%8B
是ル代码>,而不是UTF-8编码。很长一段时间以来,对于如何在URL中对非ASCII文本进行编码没有标准,而且,许多程序只是采用特定的编码(通常没有指定)。但是,较新的标准规定,在执行百分比编码之前,应始终将Unicode文本转换为UTF-8字节
因此,如果要为一个新程序生成编码字符串以满足当前标准,请坚持使用现在得到的UTF-8值。我只会使用Shift JIS版本,如果你需要它向后兼容特定的旧网站或其他软件,希望你发送的数据将有这种编码。如果您对服务器(或其他程序)有任何影响,请查看是否可以将其更新为使用IRIs 我完全不明白。方兹的评论是胡说八道;我已将其标记为删除。另请参见此问题:。