# @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