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

testBlue · 2017年03月20日 · 最后由 Silent Blue 回复于 2017年05月15日 · 1416 次阅读
print param
   if(param.has_key('name')):
       print param['name']
   else:
       print 'no name key'

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

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

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

共收到 8 条回复 时间 点赞

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

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

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

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

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

这个问题是 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 出来

陈恒捷 回复

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

建议还是 python3.X 吧

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