如何更改HTML文档的"实际编码"?

dan*_*007 2 html character-encoding

我通过W3C HTML验证器运行我的网页并收到此错误.

编码ascii不是正在使用的字符编码的首选名称.首选名称是us-ascii.(Charmod C024)✉第5行,第70列:内部编码声明utf-8不同意文档的实际编码(us-ascii).

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

显然,即使我在元标记中指定了UTF-8,我也不是"实际"使用UTF-8.

我如何"实际"使用UTF-8?那有什么意思?

Juk*_*ela 6

验证器的HTML5模式将编码声明之间的不匹配视为错误.在消息中,"内部编码声明"指的是meta诸如的标记<meta charset=utf-8>,并且"实际编码"(误导性地)指的是HTTP头中的编码声明.

根据当前的HTML规范(HTML5只是草稿),不匹配不是错误,HTTP标头获胜.

如果您的文档仅包含Ascii字符,则没有任何实际问题.Ascii编码的数据也非常简单地用UTF-8编码,因为在UTF-8中,任何Ascii字符都表示为单个字节,其值与Ascii相同.

这取决于服务器端使用的软件是否以及如何更改HTTP标头.如果他们现在指定charset = ascii,看起来除了验证之外它不是一个真正的问题,只要你继续使用Ascii字符.但它有点奇怪和过时.尝试将编码信息更改为charset = utf-8.您无需更改实际编码,但如果稍后添加非Ascii字符,请确保通过在创作程序中选择合适的命令或选项将文件保存为UTF-8编码.