如何在emacs中查看文件的编码?

60

我不知道当前文件的编码,如何显示它?

emacs

您可以看到文件中有一些中文字符,但是我不知道它的编码是什么。

有没有办法让它始终在Emacs图形界面上显示?

1个回答

105
你有几种方法来获取(和设置)缓冲区编码:
  • 你可以通过模式行中的 U 看到你的缓冲区处于 "Unicode" 模式,如果你将鼠标放在上面,它将在工具提示中显示当前的缓冲区编码。

  • 你也可以通过按下 C-hv buffer-file-coding-system RET 来查看当前的编码。

  • 你可以使用 C-xRETf 来改变整个缓冲区的编码,以便在下次保存时生效。

  • 你还可以更改检测到的编码以强制使用其他编码,并使用 C-xRETr 重新加载文件。

  • 你可以仅为下一个 I/O 命令设置编码,使用 C-xRETc

  • 还有其他一些可能性,请查看 C-xRETC-h

修复和诊断:

  • 在缓冲区内,如果你对单个字符的编码/详细信息感兴趣,将光标放在一个中文字符上,然后按下C-uC-x=将会有所帮助。(没有C-u的情况下,只会显示有关字符的少量信息,而编码不包括在内。)
  • 自己检查文件:
    • 你可以使用M-xfind-file-literallyRET打开一个文本文件,不进行任何解码或启发式分析
    • 或者你可以更接近底层(十六进制编辑器)使用M-xhexl-find-fileRET或对当前文件使用M-xhexl-modeRET
  • 如果文件中的编码混乱,你可以使用M-xrecode-regionRET修复部分内容

8
@BorisStitnicky:不用谢 :o) 。当我需要处理文件编码时,Emacs 是我的瑞士军刀。唯一的问题是使用它需要一段时间才能熟练掌握。不过 C-h a 命令可以帮助很多。 - Seki
1
谢谢。这帮助我解决了一个长期存在的问题!我们发现一些 "*" 是以 ASCII 编码输入的,而另一些则是 UTF8,导致一些旧程序出现错误。你真是救星。 - pauljohn32

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接