2012-09-19 3 views
1

피 켄탕 트는 외국 문자를 엉망으로 만들고 철자 검사가 실패합니다. 내 여자 친구는 독일어이므로 "häßlich"라는 단어는 진짜 독일어 단어이고 다른 맞춤법 검사 서비스를 사용하여 단어를 검사했습니다.피언 첸트가 외국어를 엉망으로 만듭니다.

스크립트 파일 인코딩은 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 윈도우 7


... 그리고 당신은 더 나은 맞춤법 검사기에있는 경우 마음, 제발 말해줘, 나는 그것을 시험해 볼 것이다 :

+0

? ASCII를 의미한다면 그것은 불가능합니다. ASCII 형식으로 "häßlich"를 입력 할 수 없습니다. 당신이 다른 것을 의미한다면 ... 글쎄, 그것은 당신이 의미하는 바에 달려 있습니다. 한편,'print name'은 반드시 올바른 일을하지는 않습니다. 그것은 여러분의 터미널이 동일한 인코딩과 파이썬의 sys 기본 인코딩으로 설정되어 있는지에 달려 있습니다 (Windows에서 일반적인 문제를 해결하기위한 몇 가지 해킹이 있지만). 그래도 Eric MSFT가 말했듯이 유니 코드 문자열을 사용하지 않는 한 아무 것도 할 수 없다고합니다. – abarnert

답변

2

파이썬에는 두 가지 유형의 문자열이있다. 즉, 앞에 'u'가 필요한 바이트 문자열과 유니 코드 문자열이있다. 문자열의 유니 코드 문자열 :

word = u"häßlich" 

häßlich is the old spelling of hässlich (후자는 사전에 있으며 제안 사항으로 반환됩니다). 맞춤법이 틀린 것으로 간주되기를 원한다면 철자가 정확한 단어의 개인 목록에 단어를 추가 할 수 있습니다. 당신은 "일반 ANSI로 스크립트 인코딩을 변경"에 의해 정확히 무엇을

enchantdict.add (단어)를 뜻

+1

그건 속임수 였어, 고마워. =) – elfduck

관련 문제