我正在发送编码的post数据到appengine项目。但是appengine在响应中显示空白字符。在
我正在发送此表单数据:
mdata=I%FD%FD%FE%DE%DE%E7%E7%C7%D6%F6%F6%D6%D6%0A%0A
我的appengine响应代码是:
request_data = self.request.get('mdata')
mailhtmldata = urllib.unquote_plus(request_data)
repr(request_data)和repr(mailhtmldata)是u'I\n\n'
,但unicode字符如“İschöü”仍然是空白的。我确信我的发送者正在发送mdata=I%FD%FD%FE%DE%DE%E7%E7%C7%D6%F6%F6%D6%D6%0A%0A
。我测试过了。在哪里其他字符在appengine中吗?在
谢谢你的帮助。在
对不起,我的英语不好
更新:
这是我的发送函数
^{pr2}$这是appengine代码:
class mTransfer(webapp.RequestHandler):
def post(self):
mailhtmldata = urllib.unquote_plus(self.request.get('mdata'))
x2adresx = urllib.unquote(self.request.get('mailam'))
x2gonderenx = urllib.unquote(self.request.get('mfromname'))
x2gondid = ''.join(random.choice(string.ascii_lowercase + string.digits) for x in range(12))
anagonderen = "Deneme <info@koorsender.appspotmail.com>"
mailsubjdata = urllib.unquote(self.request.get('mkonu'))
message = mail.EmailMessage(sender=anagonderen, subject=mailsubjdata)
message.to = x2adresx
message.body = mailhtmldata
message.html = mailhtmldata
message.send()
self.response.out.write("OK")
我试过了,但还是找不到解决办法
更新2:如果您使用的是unicode字符集,则将其解码为您的字符集,然后可以将其编码为utf-8。在
尝试在urlencoding之前将其转换为
"utf-8"
:输出:
^{pr2}$您发送的内容似乎是url对某些字符进行编码的结果,这些字符用
cp1254
(Windows土耳其语)编码(或非常类似的ISO-8859-9
编码)表示。你告诉“appengine”你用的是什么编码吗?在我们需要更多关于“仍然unicode字符,如”İş嫒“是空白的”的更多信息。当你看着他们的时候,怎么会感到茫然?而不是
htmldata = urllib.unquote_plus(self.request.get('mdata'))
这样做:
并编辑您的问题以显示}的结果
repr(request_data)
和{更新你说}。。。数据中的非ASCII字符不会返回为空白;它们将被删除。在
self.request.get('mdata')
返回{有人的代码正在剥离非ASCII字符。类似于}。在
your_input.decode(some_encoding, 'ignore')
,其中some_encoding
设置为ascii
或{向我们展示您“告诉appengine我使用的编码(iso-8859-9)”的代码。在
更新2回应发布的发送代码和这条评论“我正在添加
# -*- coding: iso-8859-9 -*-
到顶部”。在将“编码”放在源文件的顶部就是告诉Python编译器源文件其余部分的编码。它与数据的编码无关。你可以删除编码,而不是写
'mdata' : 'IıışŞşÖÖççç'
,你可以写'mdata' : 'I\xFD\xFD etc etc'
,得到相同的字节串发送到服务器,效果相同。您已经没有告诉appengine您使用的编码。在而不是
"Content-type": "application/x-www-form-urlencoded"
我建议你试试这个:
"Content-Type": "application/x-www-form-urlencoded; charset:ISO-8859-9;"
相关问题 更多 >
编程相关推荐