UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
由于我们使用正则表达式匹配二进制文件或者其他非格式化文件时,正则表达式的匹配内容就有可能出问题,当我们再试图使用这些信息是,编译器可能就报错,不识别这些文字,这时我们就要识别匹配出来的字符串是不是UTF-8编码。
简单介绍一下UTF-8编码格式,
后面的byte数5、6的都不使用了,所以我们就讨论前面的byte数为1、2、3、4的四种情况。代码说话
def is_UTF_8(str):
remain = 0 #剩余byte数
for x in range(len(str)):
if remain == 0:
if (ord(str[x]) & 0x80) == 0x00:
remain = 0
elif (ord(str[x]) & 0xE0) == 0xC0:
remain = 1
elif (ord(str[x]) & 0xF0) == 0xE0:
remain = 2
elif(ord(str[x]) & 0xF8) == 0xF0:
remain = 3
else:
return False
else:
if not ((ord(str[x]) & 0xC0) == 0x80):
return False
remain = remain - 1
if remain == 0: #最后如果remain不等于零,可能没有匹配完整
return True
else:
return False