【问题标题】:Emacs failure in loading charset map when saving file with unicode使用 unicode 保存文件时 Emacs 加载字符集映射失败
【发布时间】:2011-08-28 23:56:44
【问题描述】:

我使用 gnu emacs 23.3.1 在 Windows 7 64 位上创建了一个普通的文本文件。我可以使用 LinqPad 等其他程序编辑该文件(该文件恰好是一个 linqpad 脚本,扩展名为 .linq)。一切都很好,直到我将 Unicode 字符放入文件中,例如希腊字母 λ (lambda) 之类的字符。我可以在 emacs 中输入字母并正确显示。但是emacs拒绝保存文件,报如下错误

Failure in loading charset map: 8859-7

如果我在 LinqPad 中输入 λ,emacs 会读取并显示它们,但不会保存文件。

我刚刚注意到 Notepad++ 对该文件还有其他意想不到的行为:它不显示 λ,而是显示成对的奇数字符,例如 λ。这符合 unicode 字符成对存储的直觉(双关语)。所以看起来这是一种模棱两可的情况(将 unicode 存储在文本文件中),但看起来 linqPad 和 Visual Studio “做显而易见的事情”。

我想使用 emacs,因为它是我唯一可以重排注释行序列的程序(// 之后的行,用 Alt-Q 重排它们),并且我想在我的 cmets 中使用希腊字符,因为我是描述一个数学程序。

我会很感激你的建议和答案。

更新:其他问题中的一些建议说要尝试 M-x describe-char,也绑定到 C-x = ;这两个都给了我与上面相同的失败信息,所以他们在正确的轨道上,只是没有答案。

【问题讨论】:

    标签: visual-studio-2010 unicode emacs notepad++ linqpad


    【解决方案1】:

    当我升级所有软件包(包括 Emacs)时,我曾经发生过这种情况,但没有意识到在升级期间我仍然有一个 Emacs 会话打开。下次我要求它保存一些 Unicode 时,它​​尝试加载 8859-7 并失败,因为升级版本中的路径不同。重启 Emacs 后我不得不重做编辑。

    【讨论】:

      【解决方案2】:

      我刚刚注意到 Notepad++ 对该文件还有其他意外行为:它不显示 λs,而是显示成对的奇数字符,例如 λ。

      λ 是当您使用编码 ISO-8859-1 或 Windows 代码页 1252(西欧)解释字节序列 0xCE、0xBB 时得到的。代码页 1252 可能是您机器上的默认(“ANSI”)代码页。

      0xCE,0xBB 是字符λ(U+03BB 希腊小写字母 lambda)的UTF-8 编码。因此,要正确显示它,您需要告诉您的文本编辑器该文件以 UTF-8 而不是 ANSI 保存。

      在 Notepad++ 中,从菜单栏的“编码”条目中选择 UTF-8。

      在 Emacs 中,C-x C-m c utf-8-dos(或unix 或其他)作为打开或保存文件的前缀。希望通过保存 UTF-8,您将避免 ISO 8859-7(希腊)映射的任何问题;如果可以的话,您当然不想在 8859-7 中保存任何文件,或者实际上是 UTF-8 以外的任何文件。

      【讨论】:

      • 这是很棒的信息,我越来越接近了——我的 emacs 安装上的 C-x C-m 立即执行“save-some-buffers-without-asking”并且不等我输入“ c" 和其余的。我不确定与 C-x C-m 的原始键绑定是什么,也不知道如何找出。搜索“apropos”“utf-8-dos”一无所获。接下来我将尝试全新的、裸机安装的 emacs,因为它已经很老了,有数百个我从同事那里获得的自定义 elisp 文件。
      • 嗯,C-X C-m c 在 Linux 上为我工作(默认为 utf-8-unix)。我手头没有 Windows Emacs,但我认为默认绑定应该是相同的......
      • 好的,绕过所有旧的自定义设置,释放了C-x C-m c,它确实接受了C-x C-m c utf-8-dos 的保存命令,但仍然抱怨无法加载 8859-7。我想知道我是否可以直接在文件中输入0xCE 0xBB,当我指定utf-8-dos时,emacs可能会决定保存它。我现在输入 λ 的方式是通过 Windows 键盘软件(控制面板,区域),并且 λ 在 emacs 窗口窗格中按字形显示。通常,C-q 可以让我像其他控制字符一样键入非标准字符,但我不知道如何键入 0xCE 0xBB。越来越近了!
      猜你喜欢
      • 2015-01-21
      • 2012-10-15
      • 2013-04-17
      • 2014-06-15
      • 2023-03-18
      • 1970-01-01
      • 2016-07-31
      • 2015-01-07
      • 2011-02-05
      相关资源
      最近更新 更多