如何从文件中读取特殊字符?

Posted

技术标签:

【中文标题】如何从文件中读取特殊字符?【英文标题】:How can I read special characters from a file? 【发布时间】:2021-12-08 17:01:32 【问题描述】:

当我打开一个带有特殊字符(如 ö 和 ä)的 .txt 文件时,它们在 .txt 文件中看起来像这样,当我打开循环 ¿½ 行时也是这样。我怎样才能用真正的特殊字符阅读它们?我需要比较字符串,如果我比较ä == �,它会返回False

【问题讨论】:

如果 � 已经在文件中 - 即您在文本编辑器中查看文件时看到该字符 - 那么这些字符已经损坏。 【参考方案1】:

python 支持 unicode,实际上 python3 默认使用 utf-8 unicode 编码字符串。所以你应该能够打开文件并读取内容——特殊字符将被优雅地处理,因为它们只是普通的 unicode 字符。

例如:

with open('special', 'r') as inf:
  content = inf.read()
print(content[0])

$ cat special
ääää

$ python3 read.py
ä

【讨论】:

它对我不起作用。 您可能需要先检查您的文件编码。使用notepad++或类似的软件,当你打开文件时,它会在右下角给出你的文件编码。最好的猜测是你的文本文件没有用 utf-8 编码 我的文件是 utf-8 编码的。 @AmineLa 这可能与控制台不支持这些字符有关,在这种情况下,您最好的猜测可能是打印到另一个文件并检查它是否打印了应该打印的相同字符,因为它会从字面上传输相同的数据;但是,如果您想检查它,您可能需要使用 unicode 转义序列【参考方案2】:

您可以尝试使用“编码”参数。它对我有用。

with open("text.txt",'r',encoding='utf-8') as f

    

【讨论】:

通过添加 encoding='utf-8' 打印时得到�。

以上是关于如何从文件中读取特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中读取带有特殊字符的文本文件

.txt 文件中未读取特殊字符

汇编 x86 从任何文件读取并转义所有特殊字符并以字节为单位获取文件大小

急!C# 从文件名里去处特殊字符

如何在java中读取字符串中的特殊字符[关闭]

从 sql server 读取数据并在 PySpark 中使用特殊字符传递我的密码