在接口测试中,有些响应类似 "\u9875\u9762\u4e0d\u5b58\u5728"
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iN2YDO5EGZ3MWZzQGNjdzNxYzXzITNwcTM2IzLcBTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
在测试中不明白响应的什么,实际上这是unicode的中文编码。可用以下方法转换:
# coding:utf-8
# 直接在 unicode 字符串前加u ===> 应用于静态转码,比如:已获取到字符串,只想查看中文意思
us = u"\u9875\u9762\u4e0d\u5b58\u5728"
print(us)
# 使用 decode 解码成中文 ===> 应用于动态转码
s = "\u9875\u9762\u4e0d\u5b58\u5728"
print(s.decode("unicode_escape"))
常见问题
需要注意的是,动态转码在拼接字符串时,若拼接的字符串包含中文或中文字符,会抛错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
# coding:utf-8
s = "\u9875\u9762\u4e0d\u5b58\u5728"
# 拼接的字符串 不包含 中文字符===>正常
print("result: %s" % s.decode("unicode_escape"))
# 拼接的字符串 包含 中文字符串===>异常
print("结果: %s" % s.decode("unicode_escape"))
# coding:utf-8
s = "\u9875\u9762\u4e0d\u5b58\u5728"
# 在拼接字符串前 添加 u
print(u"结果: %s" % s.decode("unicode_escape"))