尝试编辑文件时出现错误消息:"The character set specified in the content type (UTF-8) does not match file content."

Error message when trying to edit a file : "The character set specified in the content type (UTF-8) does not match file content."

我有一个 Zope 3 框架,其界面允许直接从浏览器编辑文件的内容。

到目前为止一切正常。不幸的是,在某些文件上,我无法再编辑它们,出现以下错误消息:

"The character set specified in the content type (UTF-8) does not match file content." 

以下截图:

例如,我设法通过 ftp 下载了一个我无法编辑的文件,并在下面显示 header :

<meta http-equiv="Content-Type" content="text/html; charset="utf-8"" />
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
<!-- 3,html,xhtml,charset="utf-8" -->
<meta name="src" content="content_final.tex" />
<link rel="stylesheet" type="text/css" href="content_final.css" />
 <script type="text/javascript" src="./jquery.js">
</script>

在下面的内容中(body),我有这样的特殊字符:

<br />&#x00A0;<span class="sectionToc" >6.5 <a
href="section32.html#x40-2480006.5" id="QQ2-40-259">Déplacement le long d&#8217;une courbe</a></span>
<br />&#x00A0;<span class="sectionToc" >6.6 <a
href="section33.html#x41-2520006.6" id="QQ2-41-268">Tenseur de Riemann-Christoffel</a></span>

我想知道问题是否来自这些特殊字符:&#x00A0;&#8217;

你怎么看这个? utf-8 在我的 HTML 文件中没有得到尊重吗?如何修复此错误以便能够直接从浏览器对其进行编辑?

请告诉我我必须在导入的 HTML 页面中添加或插入什么,或者命令(我正在使用 vim / Debian GNU/LInux)应用到它们为了只有 Unicode 字符并完全兼容。

根据你提供的信息,我在这里给你我的意见。

好像是源编码问题
每个文本文件都有自己的编码。
当表示超出基本 ASCII 集的字符时,使用了许多不兼容的编码。
如今,Unicode 编码是首选,因为 Unicode 字符集涵盖了世界上任何先前存在的编码中存在的所有字符。

如果您编写一个字符,您的文本编辑器会根据先前指定的编码在内部将其保存为代码编号。如果用于保存文件的编码与另一个应用程序预期的编码不同,则无法正确识别字符。

一般来说,所有现代项目都使用 UTF-8 编码(由 Unicode 定义)。
因此,您应该确保所有源文件都在内部存储为 UTF-8 文件。

我了解到您可以像您所说的那样编辑 body 文件。
在这种情况下,您可以尝试在文本编辑器中打开该文件,然后将其编码更改为 UTF-8,从而匹配 ftp 无法编辑的文件。
每个现代 code-oriented 文本编辑器都应该能够让您以方便的方式在所有众所周知的编码中进行选择。

然后,当然,您将保存您的文件。

另一种方法是重写文件,使文件中的所有字符都具有低于 0x80 的 Unicode 代码点,因为这些代码点与任何 ASCII-friendly 编码兼容,因为非常常用的 ISO-8859-1 编码,比方说。

由于您的法语字符 é 不属于 ASCII 集,您可以使用 [= 的符号语法重写它92=],这样:

&#x00E9;  

十六进制数00E9就是十进制数233,也就是字符对应的codepoint:é (Latin Small Letter E with Acute).
因此,您的文本将如下所示:

D&#x00E9;placement le long d&#8217;une courbe  

如果你更喜欢使用十进制代码数字,那么写:

D&#0233;placement le long d&#8217;une courbe  

为了帮助研究字符的 Unicode 代码点和其他属性,您可以使用以下网站:

  1. unicode-table.com
  2. amp-what.com/

已添加

OP 在评论中说他实际上需要使用 vim 将文件保存到 UTF-8 .
这是 vim 的命令:

:set fileencoding=utf-8