我試圖從數據庫中讀取用戶名,如果有非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。 –