OpenStack 界面开发中response.body的中文编码问题
| 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的中文编码问题的更多相关文章
- OpenStack 界面开发中的排序问题
Contents [hide] 1 需求 2 调研 3 排序的办法 4 解决代码 需求 获取主机列表的时候,希望能够对主机列表能分组显示,比如网络,一组网络段希望在一起显示 调研 openstack的 ...
- 如何在MFC界面开发中响应Button按钮的Down和Up事件
通过尝试有两种方案可以解决这个问题,第一种方案是通过PreTranslateMessage函数在调度消息之前对消息类型进行筛选,第二种方案是重载CButton类,在重载后的类CForTestButto ...
- OpenWRT - WEB界面开发思路和基本方法
想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...
- winform界面开发-HTML内容编辑控件
参照及推荐博客:伍华聪 http://www.cnblogs.com/wuhuacong/archive/2009/07/07/1518346.html http://www.cnblogs.com/ ...
- 快速全面了解QT软件界面开发技术
快速全面了解QT软件界面开发技术 目录 前言 一. 学习QT可能的目的是什么? 只想体验一下QT? 当前的项目选择了用QT. 为将来做QT技术储备. 二. QT的核心技术优势是什么? QT在软 ...
- Ajax开发中服务端Response的Content-Type
转自http://www.cnblogs.com/hyl8218/archive/2010/03/10/1681484.html ajax开发中在请求服务器端的响应时, 对于每一种返回类型 规范的做法 ...
- IOS程序开发中-跳转到 发送短信界面 实现发短信
前言:我发现我标题取的不好,谁帮我取个承接上下文的标题?评论一下,我改 项目需求:在程序开发中,我们需要在某个程序里面发送一些短信验证(不是接收短信验证,关于短信验证,传送门:http://www.c ...
- 解析php开发中的中文编码问题
其实php开发中的中文编码并没有想像的那么复杂,虽然定位和解决问题没有定规,各种运行环境也各不尽然,但后面的原理是一样的. 了解字符集的知识是解决字符问题的基础. PHP程序设计中中文编码问题曾经困扰 ...
- Android开发中使用Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 首先,我们先看拨号界面,代码如下: Intent intent =new Intent(); intent. ...
随机推荐
- MySQL学习笔记——复制的实现原理
1.三个线程 MYSQL复制是从主服务器复制到一个或多个从服务器的异步过程,在主服务器与从服务器之间实现整个复制过程主要由三个线程来实现,其中一个线程I\O在主服务器器端,另两个线程(SQL线程和I\ ...
- android JSONArray JSONObject 字符串转json数组 遍历json对象
String json = "{''data'':[{''name'':''Wallace''},{''name'':''Grommit''}]}"; StringBuffer m ...
- 磁盘空间已满导致rabbitmq无法启动
rabbitmq-server 启动问题 今天遇到一个挺奇怪的 rabbitmq-server 的启动问题. 在内部使用的 openstack 环境上,rabbitmq-server突然就关掉了,无法 ...
- PHP 数组和字符串互相转换实现方法
$array=explode(separator,$string); $string=implode(glue,$array);
- 01 viewport
<meta name="viewport" content="width=device-width,initial-scale=1.0">
- mina学习
长连接表示一旦建立了链接,就可以长时间的保持双方的通讯,例如: socket链接,推送平台. 短链接表示建立链接,完成数据的交换之后,就断开链接,例如: http链接. mina 框架是对socket ...
- oracle启动关闭命令
关闭:1.shutdown normal 不允许新的连接.等待会话结束.等待事务结束.做一个检查点并关闭数据文件.启动时不需要实例恢复. 2.shutdown transactional不允许新的连接 ...
- 修改了系统自带头文件后,Xcode会报错
1.Xcode自带头文件的路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Develo ...
- iOS自动偏移64个像素
自从iOS7开始,如果添加的scrollview是uiviewController第一个视图,系统会默认自动添加-64的偏移量,所以规避的方案就添加一个UIView之后再添加你的scrollview.
- Hadoop学习(2)-- HDFS
随着信息技术的高度发展,数据量越来越多,当一个操作系统管辖范围存储不下时,只能将数据分配到更多的磁盘中存储,但是数据分散在多台磁盘上非常不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,因此诞 ...