简介python在执行代码过程是不知道这个字符是什么意思的、是否是中文,而是把所有代码翻译成二进制也就是000111这种形式,机器可以看懂的语言。 也就是在计算机中所有的字符都是有数字来表示的。汉字也是有数字表示的,Unicdoe4E00~9FFF表示中文,所以如果一个字符的utf-8编码在这个区间内,就说明它是中文。

中文编码对应表GBK

UTF16

UTF8

汉字

D2BB

4E00

E4 B8 80

B6A1

4E01

E4 B8 81

C6DF

4E03

E4 B8 83

CDF2

4E07

E4 B8 87

D5C9

4E08

E4 B8 88

C8FD

4E09

E4 B8 89

C9CF

4E0A

E4 B8 8A

CFC2

4E0B

E4 B8 8B

D8A2

4E0C

E4 B8 8C

实践1. 判断utf-8 代码如下:

代码语言:javascript复制def is_Chinese(word):

for ch in word:

if '\u4e00' <= ch <= '\u9fff':

return True

return False2. 测试用例:

代码语言:javascript复制#-*- coding:utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding('utf8')

def check_contain_chinese(check_str):

for ch in check_str.decode('utf-8'):

if u'\u4e00' <= ch <= u'\u9fff':

return True

return False

if __name__ == "__main__":

print check_contain_chinese('中国')

print check_contain_chinese('xxx')

print check_contain_chinese('xx中国')结果:

True

False

True

3. 判断字符包含中文:

代码语言:javascript复制 def is_not_en_word(self, word:str):

'''

判断一个词是否是非英文词,只要包含一个中文,就认为是非英文词汇

:param word:

:return:

'''

count = 0

for s in word.encode('utf-8').decode('utf-8'):

if u'\u4e00' <= s <= u'\u9fff':

count += 1

break

if count > 0:

return True

else:

return False

def is_en_mail(self, mail_text:str):

'''

判断一个词是否是非英文词,只要包含一个中文,就认为是非英文词汇

:param word:

:return:

'''

tmp_text = ''.join(mail_text.split())

count = 0

print('tmp_text:', tmp_text)

for s in tmp_text.encode('utf-8').decode('utf-8'):

if u'\u4e00' <= s <= u'\u9fff':

count += 1

if float(count/(tmp_text.__len__())) > 0.1:

return False

else:

return True小结参考: https://blog.csdn.net/QFire/article/details/82753726

https://blog.csdn.net/lanSeFangZhou/article/details/124163110