在接口测试中,有些响应类似 "\u9875\u9762\u4e0d\u5b58\u5728"
在测试中不明白响应的什么,实际上这是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"))