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