如何将Unicode UTF-8显示为Unicode?


12

我有一些UTF-8编码的文本文件,这些文件在Emacs中显示奇怪的转义码。例如,此文本:

在ista quaestione中,临时名称“ Deus”的智力指数;secundo,响应时间为准。

在Emacs中显示如下:

在此处输入图片说明

这仅在Emacs中发生。其他编辑器会正确显示文本。我该如何解决这个问题?


更新1

如果我致电revert-buffer-with-coding-system并选择utf-8该文件,则可以正确读取。因此,正如Gilles正确猜测的那样,Emacs并未检测到文件编码。如果将代码添加; -*- coding: utf-8 -*-到文件中,Emacs将打开并正确显示它。


更新2

我将文件重新编码为“使用BOM编码的UTF-8”,现在在Emacs中可以正常显示。我不知道两种类型之间有什么区别,但是Emacs似乎只知道BOMED一种。


Emacs无法将该文件识别为UTF-8。您的初始化文件的内容是什么?您正在运行哪个版本的Emacs?如果使用emacs -q或启动Emacs,它会改变任何东西emacs -Q吗?
吉尔(Gilles)'“ SO-别再邪恶了”

其他UTF-8文件没有问题。我正在运行GNU Emacs 24.4.4。与emacs -q或没有区别emacs -Q
NVaughan 2015年

嗯,如果它可以与其他文件一起使用并且处于原始配置,那么原因可能是该文件在某处还包含无效的UTF-8。让我看看如何与Emacs交流...
吉尔斯(Gills'SO-不要邪恶)

Answers:


10

由于某些原因,Emacs无法将文件识别为UTF-8。您可以通过运行命令C-x RET rrevert-buffer-with-coding-system)并输入来强制Emacs以UTF-8格式重新打开文件utf-8

Emacs不能将此文件识别为UTF-8(但可以识别其他文件)的原因很可能是它包含一些无效的UTF-8序列。escape-glyph在将文件重新解释为UTF-8后,该序列仍将显示为反斜杠,后跟三个具有不同颜色(八位数字)的八进制数字。您可以通过运行C-M-sisearch-regexp)并查找来搜索这样的序列

[^^@-~[:multibyte:]]

^@通过键入C-q C-SPC(在这里是字符^ @ = 0,而不是两个字符序列的抑扬符;它前面的字符是抑扬符)来输入。

您可以强制Emacs中加入了能够识别该文件为UTF-8 编码系统文件变量:把下面的-*-coding: utf-8-*-第一线,或放像这样接近该文件的末尾(可以代替#任何前缀,但Local Variables:End:绝出现在冒号后面的样子完全一样):

# Local Variables:
# coding: utf-8
# End:

Emacs 根据几种设置(主要是语言环境以及变量auto-coding-alist和)来根据要解释文件选择编码auto-coding-regexp-alist。由于即使运行该文件也存在相同的问题emacs -Q,我认为这与这些设置无关,而与文件内容有关。


如果我打开该文件没有编码系统文件变量(即当文件显示错误),然后运行正则表达式搜索,我的所有\342\200\230,等得到选择。但是,如果我“正确”(使用编码变量)打开它,则不会出现搜索结果。
NVaughan 2015年

@NVaughan嗯。然后,我不明白为什么在其他文件(尤其是)下不能将此文件识别为UTF-8的原因emacs -Q
吉尔(Gilles)'所以

1

回答有关BOM的问题已经很晚了,但是我还是会做。

字节顺序标记(BOM)是三个字节\ xef \ xbb \ xbf的序列,该序列在文件的开头向系统和应用程序指示内容被编码为UTF-8。正确地,它们是元数据,不被视为内容的一部分。

大多数应用程序-Emacs就是其中之一-尊重BOM并使用它编写所有UTF-8文件。其他应用程序可能会在阅读时尊重它,但不会写它;其他人对此一无所知,可能会在遇到错误消息时抛出错误消息。换句话说,情况是混乱的。我更喜欢尽可能使用它。


-1

仅适用于类似UNIX的系统。

在许多情况下,〜/ .bashrc〜/ bash_profile中的直接编码定义

LANG=en_EN.UTF8

完成

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

在〜/ .profile中应该可以解决您的问题。

PS在进行了这些更正之后,您需要在会话中重新登录以使更改变得可见。


尽管您说的可能有用,但这似乎无法回答此问题,因为该问题仅与某些 utf-8文件有关。
JeanPierre

假设在配置严格的编码定义文件后,这个问题可能会消失的所有文件永远结束以来:-)
玉衡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.