2

標準のアスキー チャートにない特殊文字を処理する方法を見つけようとしています。httplib および urllib モジュールに慣れるために、詩の翻訳を行っています。問題は、ある言語から別のアルファベットの別の言語に翻訳するときです。つまり、英語からスペイン語/フランス語から英語へのいくつかのフレーズは機能しますが、競合を避けるために事前に賢明に単語を選択した場合にのみ (目的を無効にします)。私が渡した奇妙な文を許してください、私は魅力的な言葉を使う方法がまったくありません。

import httplib, urllib, json
connObj = httplib.HTTPConnection("api.mymemory.translated.net")
def simpleTrans(conn, text, ln1, ln2):
    paramDict = {'q': text,
                 'langpair':ln1+"|"+ln2}
    params = urllib.urlencode(paramDict)
    conn.request("GET","/get?"+params)
    res = connObj.getresponse()
    serializedText = res.read()
    responseDict = json.loads(serializedText)
    return responseDict['responseData']['translatedText']


a = simpleTrans(connObj, "man eats dogs for the sake of poetry police give him ten years in jail", 'en', 'fr')
b = simpleTrans(connObj, a, 'fr', 'es')
c = simpleTrans(connObj, b, 'es', 'no')
print (simpleTrans(connObj, c, 'no', 'en'))

予想どおり、次のエラーが発生します。

bash-3.2$ python translationPoetry.py 
Traceback (most recent call last):
  File "translationPoetry.py", line 15, in <module>
    b = simpleTrans(connObj, a, 'fr', 'es')
  File "translationPoetry.py", line 6, in simpleTrans
    params = urllib.urlencode(paramDict)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1294, in urlencode
**UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 54: ordinal not in range(128)**

誰かが私のためにいくつかのアイデアを跳ね返すことができれば、私はとても感謝しています!

4

1 に答える 1

0

ASCII は、すべての文字を 8 ビットで表現する必要があるため、制限のある文字セットです。Unicode を参照することをお勧めします。Unicode は標準形式であり、英語の語彙以上のものを表現する機能を備えています。ここ

から開始できます。

また、decode() 関数も見てください。

st = 'ASCII character string.'
st.decode('utf-8')
于 2013-04-30T03:00:57.600 に答える