• 解决GAE数据库保存时的编码问题


    最近业余时间在gae上写了个程序,以统一使用及管理我在各个地方各个浏览器的书签

    深蓝在线书签http://deepbluebookmark.appspot.com/

    遇到一个编码的问题

    gae数据库中的db.StringProperty字段类型只有当传入的值时是unicode类型的时候才能正常保存

    因为保存的时候对传入的值进行了unicode(value).encode("utf-8")操作

    系统缺省的encoding是ascii

    那么当vlaue中含有非ascii类型的字符时就会报错

    搜索一下,网上有这样的解决方案

         code = sys.getdefaultencoding()
         if code != 'utf8':
             reload(sys)
             sys.setdefaultencoding('utf8')
    

    但不是很好用,第一次访问的时候都会出错

    系统默认编码的改变肯定对已经运行的程序有影响

    然后想干脆全部都使用unicode编码好了,然而从数据库查询出的结果却又是str类型,

    结果还是存在编码的问题

    没有办法,只有自己定义一个字段类型以能在赋值的时候自动把值转为unicode

     class StringProperty(db.StringProperty):
      def __set__(self, model_instance, value):
        if value != None:
            if not isinstance(value,unicode):
                value = value.decode("utf-8")
        db.StringProperty.__set__(self,model_instance,value)
    

    很希望gae能直接支持utf-8编码

  • 相关阅读:
    修改用户密码,权限
    域渗透
    跨域
    目录
    C中的extern和static
    XSS进阶
    SQL injection
    双重指针学习笔记
    文件上传学习笔记
    Hello Python
  • 原文地址:https://www.cnblogs.com/yashen/p/1881717.html
Copyright © 2020-2023  润新知