问题
Gedit 说我的一个使用 UTF-8 编码的文件包含无效字符,如果我继续使用,可能会被损坏。
细节
有问题的文件是我的某天/也许列表。我通常会在其中添加我想阅读的来源的链接,例如博客文章。我怀疑我添加的其中一个来源的链接包含无效字符,导致了我的问题。
我发现这里我需要运行 isutf8,然后使用 xxd 或 hexdump 扫描文件中的无效字符。运行 isutf8 毫无意义,因为如果这一页是正确的,它所做的只是告诉您文件是否包含无效字符。我读过一些关于 xxd 的手册页,以及关于 hexdump 的其他资料,但我什么都不懂。
我尝试过的方法
没什么。我担心编辑后文件可能会损坏或发生其他问题,所以我没有动它。此外,我的研究能力很差,所以我自己找不到解决方案。
答案1
如果您只使用 Gedit 编辑文件,原则上不会发生这种情况。在这种情况下,字符将自动转换为当前文本文件的字符代码。
如果由于某种原因引入了错误编码的字符,那么找出它们所在位置的一种方法是使用
grep -axv '.*' file.txt
(版权归这里)。该命令将仅显示包含无效字符的行。为了方便识别行,您可以添加-n
显示行号的选项。
然后在 Gedit 中打开文件,继续跳过给出的警告消息。然后您可以编辑掉错误的字符。保存并关闭,然后重新打开文件。如果不再发出警告,则所有错误字符都已删除。
答案2
如果运气好的话 [如果这样的文件只用于在 gedit 或类似的文本查看器中读取,那么您将得到一个或多个无法识别的字符,这些字符不会有任何意义地显示]
如果只有最近一次的更改导致了问题,那么一切都非常简单。
对当前文件和 gedit 可能为您创建的自动备份进行多次备份。复制和备份文件的方法有很多,其中许多方法可以自动化,但目前最简单的方法是注意,如果文件位于另一个目录文件夹或设备中,Linux 将允许您拥有同名文件。因此,也许可以创建子文件夹,将它们命名为 usenow1 backup1 和 backup2,然后将文件复制到每个文件夹中。
注意 gedit 允许自动备份首选项 > 编辑器 > [x] 保存前创建备份文件。
如果已启用,则您已经自动保存了一个备份文件,该文件的名称和位置相同,但以横线 ~ 字符结尾。如果您有这样的文件,请同时制作多个副本。
现在,您可以放心地使用其中一个副本,因为您不会破坏任何尚未破坏的内容,并且您有备份。如果您在收到警告后关闭了系统,则以 swandash 结尾的文件是可以接受的。将其重命名为文件名,在 .txt 前添加 v02,并删除末尾的 ~。使用 gedit 打开该文件,您应该会得到未损坏文件的副本。
现在,如果您使用某些命令行工具或者可能更喜欢使用 GUI,请尝试 meld 或其他方法,然后您可以比较损坏的文件和您拥有的文件,并找出您想要保留的内容和想要删除的内容。
您可能有兴趣使用 iconv 检查您的文件https://www.debian.org/doc/manuals/debian-reference/ch11.en.html#_checking_file_to_be_utf_8_with_iconv
还要注意,如果您使用另存为,gedit 可能会提供其他编码选项,其中一个可能适合您新添加的信息。