我正在尝试使用一个名为MeCab的程序,该程序对日语文本进行语法分析。我遇到的问题是,它返回一个字节字符串,如果我尝试打印它,它将为几乎所有字符打印问号。但是,如果尝试使用.decode,则会引发错误。这是我的代码:

#!/usr/bin/python
# -*- coding:utf-8 -*-

import MeCab
tagger = MeCab.Tagger("-Owakati")
text = 'MeCabで遊んでみよう!'

print text
result = tagger.parse(text)
print result

result = unicode(result, 'utf-8')
print result


这是我的输出:

MeCabで遊んでみよう!
MeCab �� �� ��んで�� �� ��う!

Traceback (most recent call last):
  File "test.py", line 12, in <module>
    result = unicode(result, 'utf-8')
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 6-7: invalid continuation byte

------------------
(program exited with code: 1)
Press return to continue


另外,我的终端能够正确显示日语字符。例如,print '日本語'可以很好地工作。

有任何想法吗?

最佳答案

MeCab默认情况下不返回UTF8。以下是来自以下链接的引文(通过Google翻译):

http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html#charset


  除非另有说明,否则使用euc。如果要使用utf8或shift-jis,请使用configure options字典更改字符集,请重新构建字典。现在,使用shift-jis创建了utf8字典。


尝试result = tagger.parse(text).decode('euc-jp')

关于python - Python:解析查询(MeCab)返回的字符串的Unicode编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17379810/

10-12 05:11