1. 基础
首先要明确一点内容,那就是在Python3当中,所有的字符串类型都是Unicode。
而你想读入的磁盘当中的文件是有编码的。
2. 演示
1 | f1 = r'./Files/UTF8.txt' |
结果如下:
----------------------------读入的str是Uincode----------------------------
s_utf8: 共享单车是人类社会的一大进步。
s_gbk: 共享单车是人类社会的一大进步。
s_utf8 == s_gbk: True
---------------------读入的bytes是编码后的结果(utf8码gbk码等等)-----------------
----
b_utf8:
b'\xe5\x85\xb1\xe4\xba\xab\xe5\x8d\x95\xe8\xbd\xa6\xe6\x98\xaf\xe4\xba\xba\xe7\x
b1\xbb\xe7\xa4\xbe\xe4\xbc\x9a\xe7\x9a\x84\xe4\xb8\x80\xe5\xa4\xa7\xe8\xbf\x9b\x
e6\xad\xa5\xe3\x80\x82'
s_gbk:
b'\xb9\xb2\xcf\xed\xb5\xa5\xb3\xb5\xca\xc7\xc8\xcb\xc0\xe0\xc9\xe7\xbb\xe1\xb5\x
c4\xd2\xbb\xb4\xf3\xbd\xf8\xb2\xbd\xa1\xa3'
----------------------------对str进行编码encode----------------------------
s_utf8和s_gbk本质上都是相同的Unicode, 结果只取决于encode为什么
s_utf8.encode('utf-8') == b_utf8: True
s_utf8.encode('gbk') == b_gbk: True
s_gbk.encode('utf-8') == b_utf8: True
s_gbk.encode('gbk') == b_gbk: True
---------------------------对byte进行解码decode----------------------------
b_utf8.decode('utf-8'): 共享单车是人类社会的一大进步。
b_gbk.decode("gbk"): 共享单车是人类社会的一大进步。
3. 如何打开一个不知道编码的文件
1 | import chardet |
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
共享单车是人类社会的一大进步。
{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
共享单车是人类社会的一大进步。