如何显示正确的 UTF-8 编码


How to display proper UTF-8 encoding?

<html>
    <head>
        <title>тест</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

我已经设置了元标记,但是每次打开浏览器(Chrome)时,我都必须转到Tools -> Encoding并在UTF-8上设置编码才能使其正常工作。

有没有办法避免此步骤,以便浏览器显示正确的 UTF-8?

您的 Web 服务器可能正在发送具有不同charsetContent-Type 标头。这将优先于您的<meta>标记。使用 curl 在命令行上确认这一点(需要 *nix 系统):

curl -i http://example.com/yourpage.php

查看响应开头的 http 标头并找到Content-Type标头。

您可以通过以下几种方式解决此问题:

  1. 配置您的 Web 服务器(我猜是 Apache)以发送适当的字符集。请参阅 Apache 文档以获取AddDefaultCharset

  2. 使用 header() 函数仅在脚本中设置 Content-Type 标头。喜欢这个:

    header('Content-Type: text/html; charset=UTF-8');
    

    但是请确保将此调用放在浏览器的任何其他输出之前,否则PHP会阻塞。

正确的顺序是

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>тест</title>

还要在 php 代码的任何其他输出之前,甚至在嵌入的 html 之前包含:

header('Content-Type: text/html; charset=utf-8'); 

当您使用文本编辑器查看内容时,请尝试查看您的内容:如果文件执行不同,请使用此 PowerShell 脚本将编译更改为 UTF-8。之后,您需要再次将文件上传到Web服务器。

Get-ChildItem *.php -Recurse | ForEach-Object {
$content = $_ | Get-Content
Set-Content -PassThru $_.Fullname $content -Encoding UTF8 -Force}