GAE unicode字符被编码为utf-8字节

时间:2015-08-03 22:10:10

标签: python google-app-engine unicode utf-8

在我的应用中,我接受来自用户输入的文字,其中用户经常从微软字词粘贴文字。

一个很好的例子是撇号',由于某种原因,在谷歌应用引擎中发布到我的处理程序后会转换为 = E2 = 80 = 99 。我已经尝试了一些混淆的方法来防止这种情况,我很乐意简单地删除这些字符,其中一些方法适用于普通的python但不适用于app引擎。

这是我尝试过的一些内容:

problem_string = re.sub(r'[^\x00-\x7F]+','', problem_string)# trying to remove it
problem_string = problem_string.encode( "utf-8" )# desperation...
problem_string = "".join((c if ord(c) < 128 else '' for c in problem_string))# trying to just remove the thing
problem_string = unicode(problem_string, "utf8")# probably fails since its already unicode

...我试图捕获字符串,包括',然后将其作为StringProperty()保存到ndb数据存储区。除最后一个选项外,apsotrophe示例转换为 = E2 = 80 = 99

如果我可以保存撇号类型字符并再次显示它会很棒,但只是删除它也可以满足我的需求。

*编辑 - 以下内容:

experience = re.sub(r'[^\x00-\x7F]+',' ', experience)

似乎在开发服务器上正常工作,并成功删除了违规的撇号。

另外可能存在的问题是POST字段是通过blobstore进行的,所以:blobstore_handlers.BlobstoreUploadHandler,我认为这可能会导致一些问题。

我真的碰到了我的头,我真的真的欣赏来自一些聪明的筹码的解释......

1 个答案:

答案 0 :(得分:0)

好的,我认为我偶然发现了一个解决方案。

它与blobstore上传处理程序有关,我猜它是适当地编码/解码unicode以解决奇怪的文件字符。所以我修改了处理程序,以便通过谷歌云存储而不是blobstore上传图像文件,它似乎工作正常,即''的方式进入数据存储区而不是 = E2 = 80 = 99

接下来几天我不会接受我自己的答案,也许有人可以为未来困惑的个人澄清更好的事情。