我试图从数据库中读取用户名,如果有非UTF-8字符,则会引发UnicodeDecodeError。从文件内容中删除非UTF8字符
我不确定所有非UTF8字符是什么,我正在寻找解决方案。
我想保留特殊符号,但只是过滤掉那些与UTF-8不兼容的符号。 ³
和™
(商标),不使用UTF-8,它们是我所知道的唯一两个。
我还想保留中文符号,阿拉伯文等。这就是为什么我使用UTF8。
代码:
def is_author_used(author):
with open("C:\\Users\\Administrator\\Desktop\\authors.txt", 'r', encoding='utf-8') as f:
content = f.read().splitlines()
if author in content:
return True
return False
def set_author_used(author):
with open("C:\\Users\\Administrator\\Desktop\\authors.txt", 'a', encoding='utf-8') as f:
f.write(author + '\r\n')
看来你的文件根本就没有UTF-8格式。 只有字符达到0x7f以UTF-8中的“常用方式”存储。如果你有一个字节> = 0x80,它是多字节字符的一部分。 将文件读取为UTF-8,这确实不会导致错误。 – glglgl
记事本/文本文件实际上是UTF-8 –
“³和™(商标),UTF-8不工作”是什么意思?这些都是非常好的Unicode字符,并且**所有** Unicode字符都可以表示为UTF-8。 –