gedit中的“意外错误:转换输入中的字节序列无效”

Tim*_*Tim 7 gedit

我有一个文本文件。我通过从某个网页复制到其中来创建文本文件的内容。在创建过程中,我完全处于gedit之下。然后我保存了文件并退出了 gedit。但是从那以后,我一直无法在 gedit 中打开该文件(尽管我可以在 Emacs 中打开它)。我试图在 gedit 中打开它,但失败了,因为“意外错误:转换输入中的字节序列无效”。

  1. 如果不更改文件内容,我该如何成功打开这样的文件?
  2. 我猜里面有一些“坏”字符,想看看它们是什么,如果它们不重要,就删除它们。我该如何识别那些罪魁祸首?

谢谢!

Chr*_*iki 2

我\xe2\x80\x99也遇到了同样的问题。对我来说,问题是自上次使用 Gedit 打开文件以来,文件的编码已更改(从WINDOWS-1252UTF-8)。由于我在第一次打开文件时手动设置了编码,Gedit 保存了这些信息,并在编码更改后下次打开文件时尝试重用它;这导致了上述错误消息。

\n\n

为了解决这个问题,我必须从 gvfs 元数据中删除保存的编码信息,如下所示:

\n\n
gvfs-set-attribute --type unset MY_FILE.txt 'metadata::gedit-encoding'\n
Run Code Online (Sandbox Code Playgroud)\n\n

您始终可以找到 Gedit 保存的特定文件的内容:

\n\n
gvfs-info MY_FILE.txt | grep 'metadata::gedit'\n
Run Code Online (Sandbox Code Playgroud)\n\n

例如,在发出上述命令之前,我的文件的输出是这样的:

\n\n
  metadata::gedit-encoding: WINDOWS-1252\n  metadata::gedit-position: 0\n  metadata::gedit-spell-language: de_DE\n
Run Code Online (Sandbox Code Playgroud)\n\n

删除编码属性后,输出如下:

\n\n
  metadata::gedit-position: 0\n  metadata::gedit-spell-language: de_DE\n
Run Code Online (Sandbox Code Playgroud)\n


小智 1

在终端中输入此内容

gsettings set org.gnome.gedit.preferences.encodings auto-detected "['UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16']"
Run Code Online (Sandbox Code Playgroud)