在python處理文本的過程中,經常會有文本字符集轉換的情況,
而我們希望用一個方法,不用關心文本原本的字符集是什麼樣的,直接轉換成想要的任何字符集就可以了。
方法一:
import chardet
def convert_encoding(data,new_coding='UTF-8'):
# 任意字符集轉換
encoding = chardet.detect(data)['encoding']
if new_coding.upper() != encoding.upper():
data = data.decode(encoding,data).encode(new_coding)
return data
方法二:
import icu
def convert_encoding2(data,new_coding='UTF-8'):
encoding = icu.CharsetDetector(data).detect().getName()
# encoding = chardet.detect(content)['encoding']
if new_coding.upper() != encoding.upper():
# data = data.decode(encoding,data).encode(new_coding)
data = unicode(data,coding).encode(new_coding)
return data
方法三:
import cchardet
def convert_encoding3(data,new_coding='UTF-8'):
encoding = cchardet.detect(data)['encoding']
if new_coding.upper() != encoding.upper():
data = data.decode(encoding,data).encode(new_coding)
return data
使用方法:
此處使用方法一
#轉換成utf-8
convert_encoding(data,'utf-8')
#轉抱成GBK
convert_encoding(data,'gbk')
#轉抱成GB2312
convert_encoding(data,'gbk')