特殊字符未按预期显示

时间:2015-08-27 15:42:46

标签: 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>

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

mywe

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

谢谢!

更新

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

经验教训

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

感谢大家的帮助!!!

8 个答案:

答案 0 :(得分:22)

1 - 替换

<meta charset="utf-8">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

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

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

body
{
    font-family: "Times New Roman", Times, serif;
}

希望有所帮助:)

答案 1 :(得分:4)

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

UltraEdit当前最新版本22.10如何检测UTF-8编码在用户对用户论坛主题UTF-8 not recognized, largish file中有详细说明。此论坛主题还包含有关如何为主要使用UTF-8编码的HTML编写者配置UltraEdit的建议。

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

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

  • 为UE的用户显示的U8-和行终止符类型(DOS / UNIX / MAC)&lt; v19.00或在UE的更高版本中使用基本状态栏时
  • 对于未使用基本状态栏的UE v19.00或更高版本用户,在状态栏中的编码选择器中选择
  • UTF-8

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

    菜单文件中的
  • 另存为,并分别为编码(Windows Vista或更高版本)选择UTF-8 - NO BOM 格式< / em>(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设置确定在没有或带有字节顺序标记的情况下保存文件下次保存。

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

回答这个问题:

  

我错过了什么?

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

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<?xml version="1.0" encoding="UTF-8"?>

或XML文件

<?xml version="1.0" encoding='utf-8'?>

'

和其他变体取决于"UTF-8的使用情况,并编写utf-8或{{1}}(以及其他拼写)而不知道此字符串对应用程序的含义解释文件的字节。

What's the best default new file format?包含许多有用的信息和指向网页的链接,其中包含有关文本编码的有用信息,哪些文件用于哪些文件以及如何相应地配置UltraEdit。

答案 2 :(得分:3)

您可以查看服务器是否在charset标头中发送了Content-type吗?其中指定的编码优先于您使用meta元素指定的编码。

答案 3 :(得分:2)

将font-family更改为Calibri(或任何其他普遍接受的字体)对我有用。

示例:

<span style="font-family:Calibri">&#35; My_Text</span>

答案 4 :(得分:1)

我正在使用MS访问accdb数据库和PHP。在显示“±”字符时有问题。它显示为“。”。 我在一开始就在PHP中添加了以下代码以使其正确。我的问题现在解决了。

    header('Content-type: text/html; charset=ASCII');

另一种方法是使用mb_convert_encoding($row,'UTF-8','ASCII' ); 标头声明不是必需的。

答案 5 :(得分:0)

确保以html标头中指定的相同格式保存html文件。 因此,如果您有<meta charset="utf-8">

使用记事本++,可以在菜单栏中看到“编码和转换”选项,只需将文件保存为utf-8编码即可(或其他格式取决于您的html标头)。

答案 6 :(得分:0)

就我而言,我将特殊字符转换为十进制NCR,并且可以正常工作。我必须这样做,因为使用meta标签不起作用,并且我不想更改字体。
在线Unicode到十进制或十六进制转换器很多。

{{1}}

答案 7 :(得分:-1)

meta charset="utf-8"替换为meta http-equiv="Content-Type" content="text/html; charset=utf-8"。也许它会有所帮助。

否则,你的字体是什么?