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 mmh3:UnicodeEncodeError:&x27;ascii';编解码器可以';t编码位置0-14的字符:序号不在范围内(128)_Python_Python 2.7_Encoding - Fatal编程技术网

Python mmh3:UnicodeEncodeError:&x27;ascii';编解码器可以';t编码位置0-14的字符:序号不在范围内(128)

Python mmh3:UnicodeEncodeError:&x27;ascii';编解码器可以';t编码位置0-14的字符:序号不在范围内(128),python,python-2.7,encoding,Python,Python 2.7,Encoding,我正在查询数据库中的笑话,正在返回Pythonstrs。我想将它们用作Unicode对象,因此我: joke = unicode(joke, 'utf-8') 这适用于我的所有数据库结果,不会引起任何问题 然后我试着把每个笑话中的每一个单词拼凑成这样: result = mmh3.hash(joke) 我回来了: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-14: ordinal not in

我正在查询数据库中的笑话,正在返回Python
str
s。我想将它们用作Unicode对象,因此我:

joke = unicode(joke, 'utf-8')
这适用于我的所有数据库结果,不会引起任何问题

然后我试着把每个笑话中的每一个单词拼凑成这样:

result = mmh3.hash(joke)
我回来了:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-14: ordinal not in range(128)
我检查了文本,它是日语的。这是否意味着我应该在散列之前删除所有非ascii字符,或者有更好的方法来处理这个问题

谢谢

函数
.hash(…)
似乎需要
字节
ascii
可转换文本

最简单的方法(如果您完全处理
unicode
对象)是将它们转换为
字节,您可以调用
mmh3.hash

result = mmh3.hash(joke.encode('UTF-8'))
.hash(…)
函数似乎需要
字节
ascii
可转换文本

最简单的方法(如果您完全处理
unicode
对象)是将它们转换为
字节,您可以调用
mmh3.hash

result = mmh3.hash(joke.encode('UTF-8'))

请包含完整的错误消息。(以及
joke
的值)不清楚是哪个函数导致了错误。@DYZ我无法共享该值,但它是日文文本。该日文文本的类型是
unicode
。正如我提到的,
unicode(笑话,'utf-8')
函数调用工作正常。请包含完整的错误消息。(以及
joke
的值)不清楚是哪个函数导致了错误。@DYZ我无法共享该值,但它是日文文本。该日文文本的类型是
unicode
。正如我提到的,
unicode(笑话,'utf-8')
函数调用工作正常。感谢您的帮助!因此,为了清楚起见,我从
str
开始,用
utf-8
编码转换为
unicode
,但现在你建议我称之为
joke.encode('utf-8')
?我觉得我误解了什么。再次感谢!unicode三明治:)--最好在应用程序中使用
unicode
,并在与需要字节的东西(网络、
mmh3.hash
等)交互时转换为二进制类型。注意,我在这里说“代码>字节<代码>,但是在Python 2中,x>代码>字节<代码>是<代码> STR 的别名(虽然实际上你应该考虑升级到Python 3——你的时间已经用完了)谢谢你的帮助!因此,为了清楚起见,我从
str
开始,用
utf-8
编码转换为
unicode
,但现在你建议我称之为
joke.encode('utf-8')
?我觉得我误解了什么。再次感谢!unicode三明治:)--最好在应用程序中使用
unicode
,并在与需要字节的东西(网络、
mmh3.hash
等)交互时转换为二进制类型。请注意,我在这里说“代码>字节<代码>,但是在Python 2中,X<代码>字节是<代码> STR 的别名(虽然实际上你应该考虑升级到Python 3——你的时间已经用完了!)