1、在线编码转换:https://tool.oschina.net/encode
2、1)json.dumps() 会默认参数ensure_ascii=True,即遇到中文直接转ascii编码,而非utf-8;而如果不想json串里包含ASCII编码,则应设置ensure_ascii=False。官方说明如下:
json.dumps-ensure_ascii参数.png
2)即使忘了设参数ensure_ascii=False,直接json.loads出来,应该也没问题(显示中文,而非unicode编码);或者采用eval的方式,对json字符串操作一次,也能还原中文。
3)今天遇到的问题(理顺了):我给socket服务端返回的直接是(某些字段含中文字符串的)dict(而非字符串),socket不支持数据结构的传输,于是自己会有一次字典转字符串的操作,这样的转换,将中文转换为了ASCII编码(即没有特别指定ensure_ascii=False),所以U3D端看到的都是中文的ASCII编码,而非中文。
解决方式:我按照编码转好后,直接传字符串给服务端
后续:还是没能解决,客户端拿到的中文依然是ASCII码,之后再深入研究一下。
3、字符串编码笔记:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
4、检查字符串编码:
1)在线查验网站
2)Python chardet包
遇到报错:TypeError: Expected object of type bytes or bytearray, got: <class 'str'>
问题:字符串没有转成字节编码
解决:chardet.detect(b"\u5317\u4eac\u5e02")
改正后.png
3)str-bytes转换方法: 字符串转为编码必须制定编码形式
https://stackoverflow.com/questions/7585435/best-way-to-convert-string-to-bytes-in-python-3 str-bytes.png image.png
网友评论