2017-02-15 9 views
0

私は、ローカルファイルシステムに格納された変数を取得し、それらを変数に格納するプログラムを持っています。次に、Web API呼び出しで使用するためにそれらをURLエンコードしようとします。私はいくつかの私の呼び出しでエラーが発生していることに気付きましたが、調査の結果、エンコーディングが期待どおりに機能していないように見えました。これらの2つの文字列演算で異なる出力が生成されるのはなぜですか?

この文字列エンコーディングは正しい結果を生成します。

newstring = urllib.parse.quote(u"Müller".encode('utf8')) 
print(newstring) 

出力

M%C3%83%C2%BCller 

しかし、このコードは

string2 = "Müller" 
newstring2 = urllib.parse.quote(string2.encode('utf8')) 
print(string2) 

出力

Müller 

違いはここにあるどのような任意のアイデア正しい出力を生成し、どのように私はしません。それを修正することができます秒最初のコードで正確な結果が得られますか?

+1

私はPython 3のすべての文字列がデフォルトでユニコードであると思っていました。あなたはまだ 'u'Müller ''に 'u'が必要ですか? –

+1

'2.x' /' 3.x'コードベースのメンテナンスを簡素化する必要があるときには、@RocketHazmat 'u'''が一般的に使用されます(' 3.3'で追加されました)。 OPがそれを目指していない場合、「u」は冗長です。 –

答えて

1

おそらく、print(newstring2)を2番目の例で書くことを意図していましたか?これは、最初の例と同じ出力を生成します。

In [1]: string2 = "Müller" 
In [2]: print(urllib.parse.quote(string2.encode('utf8'))) 
M%C3%BCller 
+0

あなたは正しいです。ありがとう! –

関連する問題