# @version:Python2.7
# usc2转ansi
问题
一个带有中文字符串s,json.loads (s)
之后
对其进行打印,中文被转换成了形如\u5e73\u5b9a
的形式。
使用编码工具中的编码助手对其进行解码得知,从\u5e73\u5b9a
到中文'平定'
的转换为usc2转ansi。
既然知道了两种字符的编码格式,剩下的就只剩如何解决了。
解决方法
有一个字符串, usc2内容是:
%u5728%u5e94%u7b54%u4e4b%u524d%u53d1%u9001%u8baf%u606f%u6210%u529f%uff0c%u8bf7%u7b49%u5f85%u7b54%u590d…对应的ansi的内容是: 在应答之前发送讯息成功,请等待答复…
在python2如何进行互相转换?
一楼V2EX@cute给出的答案是:
s = '%u5728%u5e94%u7b54%u4e4b%u524d%u53d1%u9001%u8baf%u606f%u6210%u529f%uff0c%u8bf7%u7b49%u5f85%u7b54%u590d'
print s.replace('%u','\\u').decode('raw_unicode_escape').encode('gbk')
我测试了一下结果输出是乱码,于是对以上的解决方法进行了修改。
s.replace('%u','\\u').decode('raw_unicode_escape').encode('utf-8')
即可正常输出中文:
在应答之前发送讯息成功,请等待答复
最后
实际上我的需求跟上面的例子正好相反,我需要将中文转换成为形如\u5e73\u5b9a
的格式。
在以上的解决方案中逆向走就OK了,比如:
print '平定'.decode('utf-8').encode('raw_unicode_escape')
# 输出为:\u5e73\u5b9a
print '北京'.decode('utf-8').encode('raw_unicode_escape')
# 输出为:\u5317\u4eac