对Openstack进行二次开发的时候,遇到很多中文编码的问题。Openstack与数据库的映射使用的是 SQLAlchemg.中文在web页面中显示没有太大问题,但是在数据库中存放的中文数据全是乱码。 一.最开始以为是Python的原因,因为Python默认的字符编码是ascii,不支持中文字符。因此使用以下方法对python系统的默认编码进行了修改:
[code="python"]
import sys
sys.getdefaultencoding()
[size=medium;] 获取当前系统的默认编码, 可能会报AttributeError: 'module' object has no attribute 'setdefaultencoding'的错误,执行:>>>reload(sys)再执行以上命令就可以顺利通过。在python的安装目录下$python_home/site-packages文件夹下新建一个sitecustomize.py.内容为:
[code="python"]# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
重启Python解释器后重新执行sys.getdefaultencoding(),即可发现编码已经设置为UTF-8。
二.完成以上设置后,并没有解决我所遇到的问题,于是继续研究Openstack nova中的db模块,并在Google中寻找答案。之后将目光放在了SQLAlchemg上,幸运的找到了这篇文章
http://www.cnblogs.com/firefish/archive/2008/11/15/sqlalchemy.html
其中提到用'.decode('gbk').encode('utf8')对中文内容进行编码。这个方法之前已经试过,并不管用。于是继续往后面看,文章中又提到SQLAlchemg支持在数据库url中指定connection的编码格式,指定方式如下:
'mysql://uid:pwd@localhost/mydb?charset=utf8' 。
于是找到Openstack nova的配置文件/etc/nova/nova.conf 其中有一行配置为sql_connection,果断在url后加上‘?charset=utf8',重启nova所有相关服务,问题得到解决。
分享到:
相关推荐
在OpenStack环境中,数据库中文乱码问题是一个常见的挑战,特别是在处理中文数据的存储和查询时。这个问题主要出现在数据库编码设置不正确或者与OpenStack服务之间的交互过程中编码转换不当的情况。以下是一些关于...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
openstack-install-guide-yum-kilo
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
openstack-install-guide-yum-icehouse redhat 安装openstack icehouse版本文档
centos-release-openstack-train-1-1.el7.centos.noarch.rpm
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
centos7下centos-release-openstack-pike
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
《Python库:深入理解openstack-vim-driver-0.1.0》 在信息技术领域,Python作为一种强大且灵活的编程语言,拥有丰富的库支持,使得开发者可以高效地完成各种任务。今天我们将聚焦于一个名为"openstack-vim-driver-...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
知识点一:OpenStack及All-in-One概念 OpenStack是一种流行的开源云操作系统,由多个紧密集成的组件组成,用于提供云服务。All-in-One安装是一种简便的安装方式,它将OpenStack的全部服务安装在一个单一节点上,适用...
标题"PyPI 官网下载 | django_openstack_auth-1.3.0-py2-none-any.whl"表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为`django_openstack_auth`,版本号为1.3.0。`.whl`文件是Python的二进制...
centos7下centos-release-openstack-ocata-1-2
官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装