最近遇到一個頭疼的問題,用socket接收到一個字符串
格式如下:
{“trade_status”: {“desc”: “\u30106\u3011 - \u8d22\u52a1\u7ed3\u7b97\u5df2\u5b8c\u6210 “}}/end/
其中含有一段含有\(zhòng)u的編碼字串,怎么將其轉(zhuǎn)化為漢字。
decode().encode(‘utf-8') 不行,decode、encode半天搞不定,后來偶然發(fā)現(xiàn),在decode時可以選則unicode-escape
代碼如下:
# -*- coding: utf-8 -*-
import socket
if __name__ == '__main__':
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.6.63', 10001))
sock.send('[{"action": "trade_status"}]')
rec = sock.recv(1024)
print rec
print rec.decode('unicode-escape').encode('utf-8')
print rec.decode('raw_unicode-escape').encode('utf-8')
sock.close()
輸出結(jié)果:
{"trade_status": {"desc": "\u30101\u3011 - \u4ea4\u6613\u4e2d "}}/**end**/
{"trade_status": {"desc": "【1】 - 交易中 "}}/**end**/
{"trade_status": {"desc": "【1】 - 交易中 "}}/**end**/
補充:Python3解析【\u】和【\\u】字符
【\u】字符示例
a = '\u5317\u4eac\u5e02'
print(a)
北京市
b = '\\u5317\\u4eac\\u5e02'
print(b)
\u5317\u4eac\u5e02
json.loads解析
import json
a = '\\u5317\\u4eac\\u5e02'
b = '"%s"' % a
c = json.loads(b)
print(a, b, c, sep='\n')
\u5317\u4eac\u5e02
“\u5317\u4eac\u5e02”
北京市
讀取文件中\(zhòng)u字符
![](/d/20211017/71e5d91596a733a5f3a136e9a01de3d4.gif)
demjson
from demjson import decode # pip install demjson
![](/d/20211017/dc50c4172a847ad24b6a2562213179fb.gif)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- 淺析python字符串前加r、f、u、l 的區(qū)別
- Python判斷字符串是否為空和null方法實例
- python 工具 字符串轉(zhuǎn)numpy浮點數(shù)組的實現(xiàn)
- python不相等的兩個字符串的 if 條件判斷為True詳解
- python去除刪除數(shù)據(jù)中\(zhòng)u0000\u0001等unicode字符串的代碼
- 關(guān)于Python字符串顯示u...的解決方式
- python str字符串轉(zhuǎn)uuid實例