Python3 判断系统、文件、字符编码
一、判断系统编码
import locale
print('系统编码为:', locale.getpreferredencoding())
说明:CP936 其实就是 GBK,IBM 在发明 Code Page 的时候将GBK放在第 936 页,所以叫 CP936。
二、判断字符是否为Unicode编码
说明:Python 3 中 str 就是 unicode,因此可以直接判断str。
str_1 = 'ABC'
print('str_1 是否为 Unicode 编码:', isinstance(str_1, str))
或:
str_2 = '中文'
if isinstance(str_2, str):
print('str2 为 Unicode编码。')
else:
print('str2 并非 Unicode编码。')
三、查看文件或字符串编码
1、判断字符串编码
import chardet
str_1 = '这是中文\n第一行\n第二行\n第三行\n'
str_2 = str_1.encode('utf-8')
print('该字符串编码信息为:', chardet.detect(str_2))
说明:chardet.detect() 返回字典,encoding 为编码形式,confidence 为检测精确度,language 为语言。
示例:
str_3 = '这是中文'.encode('gbk')
str_4 = 'これは日本語です'.encode('euc-jp')
print('str_3 编码信息为:', chardet.detect(str_3))
print('str_4 编码信息为:', chardet.detect(str_4))
2、判断文件编码
-
创建文件
f_1 = open('test_1.txt', 'w', encoding='utf-8') f_1.write(str_1) f_1.close()
-
判断文件编码
f_2 = open('test_1.txt', 'rb') # 注意此处打开方式 'rb' str_1 = f_2.read() chardet_1 = chardet.detect(str_1) print('该字符串为: ', str_1) print('该字符串编码信息为:', chardet_1) print('该字符串编码为: ', chardet_1['encoding'])
-
以该文件编码格式读取
str_2 = str_1.decode(chardet_1['encoding']) print('该文本信息为:', str_2, sep='\n')