简介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