特殊字符未按预期显示

cur*_*us1 8 html utf-8

我有以下简单的HTML页面:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <div>
        méywe
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在Chrome或Firefox中显示它时(我没有测试其他浏览器),我看到以下内容:

mywe

我错过了什么?html文件以UTF-8编码保存.服务器是Apache.我的机器是Windows 7专业版.文本编辑器是UltraEdit.

谢谢!

更新

最初,我使用UltraEdit编辑这个html文件,我遇到了问题.基于cmbuckley对Notepad ++的输入和安装(来自Heatmanofurioso的建议),我想到了我的文件以某种方式被破坏的可能性(即使它在UltraEdit和Notepad中看起来都很好).所以我用utf-8编码的记事本保存了我的文件.仍然看到了问题(可能是由于缓存???).然后我用UltraEdit再次保存它.查看浏览器中的页面,问题就消失了.

学过的知识

有两个文本编辑器,如果那是你的工具,如果你看到无法解释的问题,请尝试不同的编辑器.即使您每天使用一个工具,也没有完美的工具.就我而言,Notepad ++修复了我的文件的utf8问题,UltraEdit以某种方式失败了.

感谢大家帮忙!!!

Hea*_*oso 23

1 - 替换你的

<meta charset="utf-8">
Run Code Online (Sandbox Code Playgroud)

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Run Code Online (Sandbox Code Playgroud)

2 - 检查HTML编辑器的编码是否为UTF8.通常,此选项位于程序顶部的选项卡上,如Notepad ++中.

3 - 如果您以某种方式导入字体,请检查您的浏览器是否与您的字体兼容.或者尝试添加一个css来将字体设置为默认/普遍接受的字体

body
{
    font-family: "Times New Roman", Times, serif;
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 :)

  • 刚刚尝试了样式和元更改。没有一个在工作。别人投了反对票。感谢您的来电! (3认同)

Mof*_*ofi 9

使用Windows-1252编码(最有可能)而不是UTF-8编码保存文件导致非ASCII字符在浏览器中显示错误的原因是缺少有关 UltraEdit 检测 UTF-8 的知识,也许还有适当的 UTF -8 配置。

当前最新版本的 UltraEdit 22.10 如何检测 UTF-8 编码在用户到用户论坛主题UTF-8 无法识别,较大文件中有详细说明。此论坛主题还包含有关如何为所有 HTML 文件主要使用 UTF-8 编码的 HTML 编写者最佳配置 UltraEdit 的建议。UltraEdit v24.00 大大改进了 UTF-8 检测,它可以在滚动到包含 UTF-8 编码字符的块时检测非常大的文件中的 UTF-8 编码字符。

不幸的是,当前最新的 UltraEdit v22.10 和以前版本用于检测 UTF-8 HTML 字符集声明的正则表达式搜索不适用于短 HTML5 变体,如论坛主题HTML5 标题中的短 UTF-8 字符集声明中所述。原因是charset=和之间的双引号字符utf-8。我通过电子邮件向 IDM Computer Solutions, Inc. 报告了这一点,因为创建了参考主题的建议是对正则表达式进行小的更改以检测短的 HTML5 UTF-8 声明。UTF-8 检测后来由 UltraEdit for UE v24.00 和 UES v17.00 的开发人员更新,作为参考论坛主题的帖子详细解释。

但是,当 HTML5 文件被声明为 UTF-8 编码,但 UltraEdit 将其加载为 ANSI 文件时,用户会在主窗口底部的状态栏中看到错误加载。一个小的(小于 64 KB)UTF-8 编码的 HTML 文件应该导致

  • U8-UE < v19.00 的用户或在更高版本的 UE 中使用基本状态栏时显示的任一和行终止符类型(DOS/UNIX/MAC)
  • UTF-8在状态栏的编码选择器中为 UE v19.00 或更高版本不使用基本状态栏的用户选择。

如果不是这种情况,UltraEdit 用户可以使用

  • 另存为从菜单中的文件,并选择UTF-8 - NO BOM用于编码(Windows Vista或更高版本)分别格式(在Windows 2000 / XP)将文件从ANSI转换为UTF-8没有字节顺序标记,或
  • ASCII 到 UTF-8(Unicode 编辑)从菜单文件中的子菜单转换将文件从 ASCII/ANSI 转换为 UTF-8,而无需立即保存,或
  • 通过状态栏中的编码选择器(仅限 UE v19.00 或更高版本)选择Unicode - UTF-8也会立即从 ASCII/ANSI 转换为 UTF-8 并启用 Unicode 编辑。

对于最后两个选项,高级 - 设置配置 - 文件处理 - 保存中的 UTF-8 BOM 设置确定在下次保存时不带或带字节顺序标记保存文件。

一旦méywe使用 UTF-8 编码将单词保存到文件中6D C3 A9 79 77 65,就会产生字节流(十六进制),méywe当使用 Windows-1252 以 ASCII/ANSI 模式(文件 - 打开对话框中的选项)打开 UTF-8 编码文件时,该字节流将显示作为代码页,UltraEdit 会在下次打开时自动检测这个文件为 UTF-8 编码文件,尽管<meta charset="utf-8">无法识别,因为现在文件的前 64 KB 中至少有一个 UTF-8 编码字符。

要回答这个问题:

我错过了什么?

在将文件打开或创建为 ANSI 文件(或更精确的每个字符编码的文本文件使用代码页)并将其声明为 UTF-8 编码后,您错过了将文件保存为 UTF-8 编码的文件。这是许多用户写入 HTML 文件的常见问题

<meta charset="utf-8">
Run Code Online (Sandbox Code Playgroud)

或者

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Run Code Online (Sandbox Code Playgroud)

或者

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

或到一个 XML 文件

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Run Code Online (Sandbox Code Playgroud)

或者

<?xml version="1.0" encoding='utf-8'?>
Run Code Online (Sandbox Code Playgroud)

和其他变化取决于'or 的用法"和写作UTF-8or utf-8(和其他拼写),而无需真正知道此字符串对于解释文件字节的应用程序意味着什么。

最好的默认新文件格式是什么?包含许多有用的信息和网页链接,其中包含有关文本编码的有用信息,使用哪种文件类型以及如何相应地配置 UltraEdit。