接口测试 python 接口测试,参数传递为中文的时候,控制台打印该信息为 16 进制而非中文字符

testblue · 发布于 2017年3月20日 · 最后由 zxc80729 回复于 2017年5月15日 · 587 次阅读
print param
   if(param.has_key('name')):
       print param['name']
   else:
       print 'no name key'

大神们,如果直接打印出param指定key对应的值,就会输出中文

但是如果直接打印param这个字典中的所有数据,对应的中文就会变为

目前这个接口一直调试不成功,我怀疑就是这个编码问题导致的,返回的数据一直提示参数错误,请大神们指点下,谢谢~

共收到 8 条回复
10506

备注:小弟用的是python2.x版本~

96

print '\xe5\x85\x88\xe7\x94\x9f'.decode('utf-8')

10506
32heyzhuliye 回复

大神,我想问个小问题,就是说我这个参数最终目的是要整合到参数中的,这个print只能保证在我用print的时候才能输出中文,但是我传参的时候不能带着print吧。。。

96

看你编码格式是utf-8还是gbk 以及参数是代码定义还是文件读取 print只是为了调试显示方便

10506
32heyzhuliye 回复

编码格式是utf-8没问题,参数目前有些low,我就是直接写的'先生',然后传递进去的。。。

605

这个问题是 python dictionary 的 __str__() 函数处理的问题。你可以试试

test_dict = {'test':"中文"}
print(test_dict)
print(test_dict['test'])

输出结果里面,第一行的中文会以 utf-8 码的形式显示,第二行的中文是正常显示的。

如果要让它显示正常中文(比如在日志里打印整个 dictionary ),有一个变通的方法。可以先用 json.dumps(test_dict, ensure_ascii=False) 转成 json 字符串,再 print 出来

10506
605chenhengjie123 回复

大神,我明白你的意思,谢谢~

7313

建议还是python3.X吧

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册