zoukankan      html  css  js  c++  java
  • 解决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编码

  • 相关阅读:
    SpringBoot打jar包以及打成war包 (springboot2.0)
    学习软件开发的心得
    SQA计划
    继续冲吧
    别跑了,看看脚下有木有money
    springIOC的那些事
    ssm
    scrum 第二次冲刺
    云医院
    团队项目开发总结
  • 原文地址:https://www.cnblogs.com/yashen/p/1881717.html
Copyright © 2011-2022 走看看