我有以下简单的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以某种方式失败了。
感谢大家的帮助!!!
答案 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文件应该导致获得
U8-
和行终止符类型(DOS / UNIX / MAC)&lt; v19.00或在UE的更高版本中使用基本状态栏时UTF-8
。如果不是这种情况,UltraEdit用户可以使用
UTF-8 - NO BOM
格式< / em>(Windows 2000 / XP)将文件从ANSI转换为UTF-8而没有字节顺序标记,或对于最后两个选项,高级 - 设置或配置 - 文件处理 - 保存中的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"># 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"
。也许它会有所帮助。
否则,你的字体是什么?