2011-03-15 5 views
2
email = self.request.get('email') 
name = self.request.get('name') 
mail.send_mail(sender="myemail", email=email, body=name, subject="sss " + name + "sdafsaã") 

//追加されました:問題は "sdafsaã"が "sdafsaã"であることでした。文字列の前に "u"を置きます。そして今、それは次のような文字列を含むGoogleアプリケーションエンジンの投稿の変数を受け取る方法:?

に動作しますそれから私はインクルードは〇〇やそのような何かのような文字があるかもしれません。この

main.py", line 85, in post 

subject="sss " + name + "sdafsa", 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 36: ordinal not in range(128) 

を取得します。詳細は

労働者(前コード)を実行するコード 名がデータストアから受信したものであるとOとOなどの文字が含まれています...

taskqueue.add(url='/emailworker', params={'email': e.email, 'name': e.name}) 

おかげ

+0

で試してみてください、あなたはdevのサーバー上のpython 2.5(ない2.6+)を使用していますか? –

+0

オリジナルを編集して、同じ質問を別の方法で再質問しないでください。 – Will

答えて

2

Pythonでどのようにユニコード作品について少し読んで試してみてください。

あなたが開発サーバー上でこのエラーが表示されている場合にも、あなたは、Python 2.5を実行していることを確認してください。

+0

問題は2つの文字列を結合しています:||| body = name + "ã" =>エラー||| body = name + u "ã" =>作品!!! ||| –

+0

できるだけ長いUnicode文字列で作業してください(ASCII文字列をUnicodeに変換する 'decode()')し、必要に応じてユニコードを 'encode()'してバイト列に戻してください。 –

0

問題は2つの文字列を結合しています:||| body = name + "ã" =>エラー||| body = name + u "ã" =>作品!!! |||

+0

これは私のために働いた方法です!だからlolを削除しないでください –

1

あなたは使用する必要があります。

email = self.request.get('email') 
name = self.request.get('name') 
mail.send_mail(sender="myemail", 
       email=email, 
       body=name, 
       subject="hello " + name.encode('utf-8') + " user!") 

変数nameは、Unicode文字列であり、他のバイト文字列に連結する前に、あなたのWebアプリケーションで使用しているutf-8やエンコードの種類でエンコードする必要があります。
name.encode()を指定しないと、Pythonはその特定の文字をエンコードできないデフォルトの7ビットasciiコーデックを使用します。

+0

ありがとうございます。問題はそこにありませんでした。私は "を含む文字列の前に" u "を追加する必要があります。それはすべてだった –

0

encode

t ='việt ứng ' 
m = MyModel() 
m.data = t.encode('utf-8') 
m.put() #success! 
関連する問題