2012-09-19 61 views
1

Pyenchant弄亂了外國人物,拼寫檢查失敗。我的女朋友是德國人,所以單詞「häßlich」是一個真正的德語單詞,我也使用不同的拼寫檢查服務檢查了這個詞。Pyenchant弄亂了外國人物

腳本文件編碼爲ANSI,格式爲UTF-8。我試圖將這個單詞編碼和解碼成不同種類的字符編碼。


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

# Python bindings for the enchant spellcheck 
import enchant 

# Enchant dictionary 
enchantdict = enchant.Dict("de_DE") 

# Define german word for "ugly" 
word = "häßlich" 

# Print the original word and the spellchecked version of it 
print word, "=", enchantdict.check(word) 

和輸出如下: h├ñ├ƒlich=假


另外,如果我改變腳本編碼成普通ANSI,這是我得到:

hõ¯lich = 
** (python.exe:1096): CRITICAL **: enchant_dict_check: assertion `g_utf8_validate(word, len, NULL)' failed 
Traceback (most recent call last): 
    File "C:\Temp\koe.py", line 14, in <module> 
    print word, "=", enchantdict.check(word) 
    File "C:\Python27\lib\site-packages\enchant\__init__.py", line 577, in check 
    self._raise_error() 
    File "C:\Python27\lib\site-packages\enchant\__init__.py", line 551, in _raise_ 
error 
    raise eclass(default) 
enchant.errors.Error: Unspecified Error 

我使用: pyenchant-1.6.5.win32.exe 蟒蛇,2.7.3.msi Windows 7的


...如果你有一個更好的拼寫檢查請介紹一下它,我會測試它:)

+0

正是你所說的「更改腳本編碼爲純ANSI」是什麼意思?如果你的意思是ASCII,那是不可能的;您不能在ASCII中輸入「häßlich」。如果你的意思是別的......呃,這取決於你的意思。同時,'print name'可能不一定是正確的;它取決於你的終端被設置爲相同的編碼和Python的系統默認編碼(雖然有一些黑客可以解決Windows中的常見問題)。儘管如此,正如Eric MSFT所說,除非您使用Unicode字符串,否則這一切都不應該是可行的。 – abarnert

回答

2

你會因爲Python中有兩種類型的字符串而被絆倒:字符串和Unicode字符串,你需要在前面加一個'u'它的字符串是一個Unicode字符串:

word = u"häßlich" 

另外häßlich is the old spelling of hässlich(後者是在字典中,並會退回作爲建議)。如果您希望拼寫正確,可以將häßlich添加到拼寫正確的單詞列表中。

enchantdict.add(字)

+1

這樣做的技巧,謝謝=) – elfduck