How to check if a string contain only UTF-8 characters
到目前为止,我正在做这样的事情:
1 2 3 4 5 6 7
| def is_utf8(s):
try:
x=bytes(s,'utf-8').decode('utf-8', 'strict')
print(x)
return 1
except:
return 0 |
唯一的问题是,我不想让它打印任何东西,我想删除print(x),当我这样做时,函数停止正常工作。例如,如果我这样做:print(is_utf8("H?tst")),当打印在函数中时,它返回0,否则它打印1。我是不是用错误的方式处理这个问题
- 如何检查python中的字符串是否为ascii的可能副本?
- 这个问题有点困惑。如果要检查字符串是否是UTF8编码的,则不需要打印该字符串。打印字符串的作用是,如果终端的字符集不能处理字符串中的某个字符,它将抛出一个错误。所以您的小功能的结果实际上取决于用户的终端设置。您可能真正想要做的是找出字符串中是否有任何非ASCII字符。
- 什么是sys.stdout.encoding?
- 哦,那么什么是s?如果它是一个python字符串,那么它总是可以编码utf-8。
您可以使用chardet模块检测未知编码。例如,如果a是字节数组,那么您可以这样确定编码:
1 2 3 4
| import chardet
b = chardet.detect(a)
print(b["encoding"]) |