Windows に Chrome Compact Language Detection ライブラリをインストールする際に問題が発生した後、この easy_install から CLD をインストールしました。
CLD を使用できるようになりましたが、エンコードの問題が発生します。
バックグラウンド
ツイートを Python スクリプトに取り込み、ハッシュタグとリンクを取り除いた後、それらを CLD に渡して言語を検出します。
以下は、私のコードの簡略版です。
s = "I am a tweet from Twitter"
clean_s = s.encode('utf-8')
lan = cld.detect(clean_s, pickSummaryLanguage=True, removeWeakMatches=True)
問題
5 回中 4 回、これは期待どおりに機能します (どの言語であるかについての応答が返されます)。
ただし、このエラーがポップアップし続けます。
UnicodeEncodeError: 'charmap' コーデックは位置 15 の文字 u'\u2019' をエンコードできません: 文字は未定義にマップされます
私はそれを読みました:
「CLD に clean (interchange-valid) UTF-8 を提供する必要があるため、エンコードの問題は事前に整理する必要があります。」
しかし、これは UTF8 にエンコードするステートメントでカバーされていると思いましたか?
アラビア語、アジア語などの言語のフォントを保持する文字列を CLD に渡すようにする必要があると思います。
これは私の最初の python プロジェクトなので、おそらく初歩的なミスです。誰かが私の間違いと修正方法を指摘できますか?
さらに情報を収集する必要がある場合は、コメントでお知らせください。Q を編集して詳細情報を提供します。
編集 それが役立つ場合は、ここに私の新人コードがあります(問題を再現するために削減されています)。Python 2.7 32 ビットを実行しています。
このコードを実行すると、しばらくすると、このエラーが発生します。エラー報告を正しく実装していない場合はお知らせください。
Raw: Traceback (most recent call last):
File "LanguageTesting.py", line 71, in <module>
parse_tweet(tweet)
File "LanguageTesting.py", line 43, in parse_tweet
print "Raw:", raw
File "C:\Python27\ArcGIS10.1\lib\encodings\cp850.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 29-32: character maps to <undefined>