0

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

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

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

在捕获下面:

错误信息示例

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

<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>

在以下内容(正文)中,我有这样的特殊字符:

<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 字符并完全兼容。

4

1 回答 1

3

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

似乎存在源编码问题。
每个文本文件都有自己的编码。
当表示超出基本 ASCII 集的字符时,会使用许多不兼容的编码。
如今,Unicode 编码是可取的,因为 Unicode 字符集包含世界上任何预先存在的编码中存在的所有字符。

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

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

我知道您可以按照您的要求编辑正文文件。
在这种情况下,您可以尝试在文本编辑器中打开文件,然后将其编码更改为UTF-8,从而匹配您无法编辑的ftp文件的编码。
每个现代的面向代码的文本编辑器都应该能够让您以方便的方式在所有众所周知的编码中进行选择。

然后,当然,你会保存你的文件。

另一种方法是重写文件,使其中的所有字符都具有以下 Unicode 代码点0x80,因为这些代码点与任何 ASCII 友好编码兼容,例如非常常用的ISO-8859-1编码。

由于您的法语字符é不属于 ASCII 集,您可以使用 HTML 的 & 符语法重写它,以这种方式:

&#x00E9;  

十六进制数00E9为十进制233,即字符对应的码位:é ( 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
于 2022-01-28T06:06:40.177 回答