Python mmh3:UnicodeEncodeError:&x27;ascii';编解码器可以';t编码位置0-14的字符:序号不在范围内(128)
我正在查询数据库中的笑话,正在返回PythonPython 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
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——你的时间已经用完了!)