Contents [hide]

问题的引入=

G在我们创建虚拟机的时候,会设置虚拟机的名称,描述,如果没有限制用户输入,用户可以输入中文,会在页面呈现出乱码显示。

解决办法

用户限制输入中文

部分可行,但在用户自定义,如主机描述等必须可以输入中文的情况不适合。

不限制用户输入,呈现上修改

原来的实现方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
try:   
            response = httpclient.fetch(url,method=method, headers = headers)
        except Exception, e:
            return {"code":e.code}
        #{"hypervisors": [{"id": 1, "hypervisor_hostname": "node-7.domain.tld"}]}
 
        body = eval(response.body.replace("null", "None")).get("servers")
        servers = {}
        for b in body:
            print "*"*50
            ip_keys =  b["addresses"].keys()
            try:   
                for ip_key in ip_keys:
                    for address_ip in b["addresses"][ip_key]:
                        if address_ip["OS-EXT-IPS:type"] == "fixed":
                            print address_ip["addr"]
                            b.update({"ip_addr":address_ip["addr"]})
                            raise ValueError
            except:
                continue
        all_servers = {"servers":body}
        return all_servers

本身eval函数是有使用风险的。修改方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
try:   
            response = httpclient.fetch(url,method=method, headers = headers)
        except Exception, e:
            return {"code":e.code}
        #{"hypervisors": [{"id": 1, "hypervisor_hostname": "node-7.domain.tld"}]}
 
        #body = eval(response.body.replace("null", "None")).get("servers")
        body = json.loads(response.body)["servers"]
        servers = {}
        for b in body:
            print "*"*50
            ip_keys =  b["addresses"].keys()
            try:   
                for ip_key in ip_keys:
                    for address_ip in b["addresses"][ip_key]:
                        if address_ip["OS-EXT-IPS:type"] == "fixed":
                            print address_ip["addr"]
                            b.update({"ip_addr":address_ip["addr"]})
                            raise ValueError
            except:
                continue
        all_servers = {"servers":body}
        return all_servers

可以显示正常的中英文。然后在必须使用英文的地方加上输入限制。

OpenStack 界面开发中response.body的中文编码问题的更多相关文章

  1. OpenStack 界面开发中的排序问题

    Contents [hide] 1 需求 2 调研 3 排序的办法 4 解决代码 需求 获取主机列表的时候,希望能够对主机列表能分组显示,比如网络,一组网络段希望在一起显示 调研 openstack的 ...

  2. 如何在MFC界面开发中响应Button按钮的Down和Up事件

    通过尝试有两种方案可以解决这个问题,第一种方案是通过PreTranslateMessage函数在调度消息之前对消息类型进行筛选,第二种方案是重载CButton类,在重载后的类CForTestButto ...

  3. OpenWRT - WEB界面开发思路和基本方法

    想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...

  4. winform界面开发-HTML内容编辑控件

    参照及推荐博客:伍华聪 http://www.cnblogs.com/wuhuacong/archive/2009/07/07/1518346.html http://www.cnblogs.com/ ...

  5. 快速全面了解QT软件界面开发技术

    快速全面了解QT软件界面开发技术     目录 前言 一. 学习QT可能的目的是什么? 只想体验一下QT? 当前的项目选择了用QT. 为将来做QT技术储备. 二. QT的核心技术优势是什么? QT在软 ...

  6. Ajax开发中服务端Response的Content-Type

    转自http://www.cnblogs.com/hyl8218/archive/2010/03/10/1681484.html ajax开发中在请求服务器端的响应时, 对于每一种返回类型 规范的做法 ...

  7. IOS程序开发中-跳转到 发送短信界面 实现发短信

    前言:我发现我标题取的不好,谁帮我取个承接上下文的标题?评论一下,我改 项目需求:在程序开发中,我们需要在某个程序里面发送一些短信验证(不是接收短信验证,关于短信验证,传送门:http://www.c ...

  8. 解析php开发中的中文编码问题

    其实php开发中的中文编码并没有想像的那么复杂,虽然定位和解决问题没有定规,各种运行环境也各不尽然,但后面的原理是一样的. 了解字符集的知识是解决字符问题的基础. PHP程序设计中中文编码问题曾经困扰 ...

  9. Android开发中使用Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent. ...

随机推荐

  1. windows下memcache安装及配置

    1.安装memcached服务,链接为http://i.cnblogs.com/Files.aspx, 下载解压后放在一个文件夹下,在开始搜索中输入cmd, 进入cmd黑框,cd 路径,进入memca ...

  2. ubuntu12.04 安装 setuptools

    ubuntu 12.04 安装django时,提示缺少setuptools. 转载自: http://blog.csdn.net/xudongtiankong/article/details/8180 ...

  3. 配置Tomcat6的管理用户

    在Tomcat上发布war之前需要配置一个管理用户以进入上传页面,而配置就是通过修改/usr/local/tomcat6/conf/tomcat-users.xml这个文件进行的.下面是修改后的文字: ...

  4. Java Final, Finally, Finalize

    Final is a Keyword, final can be used in three different ways: final variable final method final cla ...

  5. 深入浅出 React Native:使用 JavaScript 构建原生应用

    深入浅出 React Native:使用 JavaScript 构建原生应用 链接:https://zhuanlan.zhihu.com/p/19996445 原文:Introducing React ...

  6. Oracle导入中文乱码解决办法

    Oracle导入中文乱码解决办法 一.确保各个客户端字符集的编码同服务器字符集编码一致 1-       确定sqlplus字符集编码,如果是windows设置环境变量. 2-       确保Sec ...

  7. bind: address already in use

    2016/04/18 09:46:06 server.go:36: listen at 0.0.0.0:9530 2016/04/18 09:46:06 server.go:39: listen er ...

  8. CSS浮动与清浮动

    浮动 ( float css属性) float : left right Elements are floated horizontally, this means that an element c ...

  9. SQL2008中Merge Into的用法

    在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge ...

  10. 自动档车的P档和N档的区别

    P档时,驻车齿轮在变速箱内被部分锁死,所以此时平地上不踩刹车,车辆有一定的驻车效果.N档就是空档,发动机与传动轴在变速器位置彻底分离,没有连接.因此P档适合停车和驻车,就是到地方了,要熄火时挂P档,拉 ...