Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 编码给出了错误的日文汉字值_Python 2.7_Cjk - Fatal编程技术网

Python 2.7 编码给出了错误的日文汉字值

Python 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

作为scraper的一部分,我需要对URL进行编码,但我甚至无法从一个简单的符号中获得正确的输出,而且我目前被我迄今为止从各种堆栈溢出帖子中尝试的所有内容所蒙蔽

文档设置为UTF-8

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

我完全不明白。方兹的评论是胡说八道;我已将其标记为删除。另请参见此问题:。