2

我正在尝试使用一个名为 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 '日本語'工作得很好。

有任何想法吗?

4

2 回答 2

1

MeCab 默认不返回 UTF8。以下是来自以下链接的引用(通过谷歌翻译):

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

除非另有说明,否则使用 euc。如果您想使用 utf8 或 shift-jis,请使用配置选项字典更改字符集,请重建字典。现在,shift-jis,utf8 的字典被创建了。

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

于 2013-06-29T23:07:29.837 回答
0

看起来您对 MeCab 返回 UTF8 字符串的假设是错误的。因此,在您转换为unicode您必须使用一些其他编码(例如iso2022_jp,编码的确切选择取决于 MeCab 内部)。

于 2013-06-29T12:19:14.583 回答