How to receive variables in a post in google app engine that contains string with chars like: õ á?

 ̄綄美尐妖づ 提交于 2019-12-18 07:09:12

问题


email = self.request.get('email')
name = self.request.get('name')
mail.send_mail(sender="myemail", email=email, body=name, subject="sss " + name + "sdafsaã")

// added ã: the problem was that "sdafsaã" should be u"sdafsaã". with a "u" before the string. and now it works

then i get this

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)

the might have chars like õ ó and something like that.

for more details:

the code to run the worker(the code before) the name is the one that is received from the datastore and contains chars like õ and ó...

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

thanks


回答1:


Try reading a little about how unicode works in Python:

  • Dive Into Python - Unicode
  • Unicode In Python, Completely Demystified

Also, make sure you're running Python 2.5 if you are seeing this error on the development server.




回答2:


You should use:

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!")

The variable name is a unicode string and should encoded in utf-8 or in the kind of encode you are using in you web application before concatenating to other byte strings.
Without name.encode(), Python uses the default 7 bits ascii codec that can't encode that specific character.




回答3:


the problem is joining 2 strings: ||| body = name + "ã" => error ||| body = name + u"ã" => works!!! |||




回答4:


Try with encode

t ='việt ứng '
m = MyModel()
m.data = t.encode('utf-8')
m.put() #success!


来源:https://stackoverflow.com/questions/5316188/how-to-receive-variables-in-a-post-in-google-app-engine-that-contains-string-wit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!