1搁宾、在線編碼轉(zhuǎn)換:https://tool.oschina.net/encode
2、1)json.dumps() 會(huì)默認(rèn)參數(shù)ensure_ascii=True误证,即遇到中文直接轉(zhuǎn)ascii編碼继薛,而非utf-8;而如果不想json串里包含ASCII編碼雷厂,則應(yīng)設(shè)置ensure_ascii=False惋增。官方說(shuō)明如下:
2)即使忘了設(shè)參數(shù)ensure_ascii=False,直接json.loads出來(lái)改鲫,應(yīng)該也沒(méi)問(wèn)題(顯示中文诈皿,而非unicode編碼);或者采用eval的方式像棘,對(duì)json字符串操作一次稽亏,也能還原中文。
3)今天遇到的問(wèn)題(理順了):我給socket服務(wù)端返回的直接是(某些字段含中文字符串的)dict(而非字符串)缕题,socket不支持?jǐn)?shù)據(jù)結(jié)構(gòu)的傳輸截歉,于是自己會(huì)有一次字典轉(zhuǎn)字符串的操作,這樣的轉(zhuǎn)換烟零,將中文轉(zhuǎn)換為了ASCII編碼(即沒(méi)有特別指定ensure_ascii=False)瘪松,所以U3D端看到的都是中文的ASCII編碼咸作,而非中文。
解決方式:我按照編碼轉(zhuǎn)好后宵睦,直接傳字符串給服務(wù)端
后續(xù):還是沒(méi)能解決记罚,客戶端拿到的中文依然是ASCII碼,之后再深入研究一下壳嚎。
3桐智、字符串編碼筆記:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
4、檢查字符串編碼:
1)在線查驗(yàn)網(wǎng)站
2)Python chardet包
遇到報(bào)錯(cuò):TypeError: Expected object of type bytes or bytearray, got: <class 'str'>
問(wèn)題:字符串沒(méi)有轉(zhuǎn)成字節(jié)編碼
解決:chardet.detect(b"\u5317\u4eac\u5e02")
3)str-bytes轉(zhuǎn)換方法: 字符串轉(zhuǎn)為編碼必須制定編碼形式
https://stackoverflow.com/questions/7585435/best-way-to-convert-string-to-bytes-in-python-3