我需要从 Python 脚本中检查俄语单词的拼写。我正在通过 shell 将这些词发送到 hunspell。我的 hunspell 字典都是 UTF8 的。我从命令行使用它们没有问题。
但是当我尝试从我的 Python 脚本发送字符串时,发生了一些奇怪的事情。
如果我使用德语词典:
text = "Universitüt"
cmd = "echo " +text + " | /usr/local/bin/hunspell -d German_de_DE"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, executable="/bin/bash")
result, err = p.communicate()
if result:
result = result.split()
print(result)
我得到了我期待的回应
[b'Hunspell', b'1.3.2', b'&', b'Universit', b'4', b'0:', b'Universit\xc3\xa4r,', b'Universit\xc3\xa4t,', b'Universen,', b'Universaler', b'*']
我可以处理。但是,如果我用相同的代码向俄语词典发送一个俄语单词,当然除了:
text = "университат"
cmd = "echo " +text + " | /usr/local/bin/hunspell -d Russian_ru_RU"
hunspell 的响应是空的:
[b'Hunspell', b'1.3.2']
直接从 bash 它可以工作:
echo университат | hunspell -d Russian_ru_RU
Hunspell 1.3.2
& университат 1 0: университет
所以我想这是某种编码问题。但是我不知道考虑到我的语言环境是 utf-8 并且 pythonsys.getdefaultencoding()
也说 utf-8 可能是什么。
我在 Mac OS X 上使用 python 3.3.2。
任何提示将非常感谢。