オンラインサービスで翻訳する漢字を送信し、結果の英語の文字列を返したいのですが。これには単純なJSONとurllibを使用しています。
そして、はい、私は宣言しています。
# -*- coding: utf-8 -*-
私のコードの上に。
urllibに文字列型のオブジェクトをフィードすると、そのオブジェクトにUnicode情報が含まれている場合でも、すべてが正常に機能するようになりました。私の関数はと呼ばれtranslate
ます。
例えば:
stringtest1 = '無與倫比的美麗'
print translate(stringtest1)
適切な翻訳と実行につながります
type(stringtest1)
これが文字列オブジェクトであることを確認します。
しかし、もしそうなら
stringtest1 = u'無與倫比的美麗'
翻訳関数を使おうとすると、次のエラーが発生します。
File "C:\Python27\lib\urllib.py", line 1275, in urlencode
v = quote_plus(str(v))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-8: ordinal not in range(128)
少し調べてみると、これは一般的な問題のようです。
さて、スクリプトを入力すると
stringtest1 = '無與倫比的美麗'
stringtest2 = u'無與倫比的美麗'
print 'stringtest1',stringtest1
print 'stringtest2',stringtest2
それの実行は戻ります:
stringtest1 無與倫比的美麗
stringtest2 無與倫比的美麗
ただし、コンソールに変数を入力するだけです。
>>> stringtest1
'\xe7\x84\xa1\xe8\x88\x87\xe5\x80\xab\xe6\xaf\x94\xe7\x9a\x84\xe7\xbe\x8e\xe9\xba\x97'
>>> stringtest2
u'\u7121\u8207\u502b\u6bd4\u7684\u7f8e\u9e97'
私にそれを取得します。
私の問題は、翻訳される情報がどのように私の機能に到達するかを制御できないことです。そして、関数で受け入れられないUnicode形式でそれを持ってくる必要があるようです。
では、どうすればあるものを別のものに変換できますか?
Stack Overflowの質問「UnicodeをPythonの文字列に変換する(余分な記号を含む) 」を読みました。
しかし、これは私が求めているものではありません。Urllibは文字列オブジェクトを受け入れますが、Unicodeオブジェクトは受け入れません。どちらも同じ情報を含みます
まあ、少なくとも私が変更されていない情報を送信しているWebアプリケーションの観点からは、それらがPythonでまだ同等のものであるかどうかはわかりません。