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

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

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

4

3 回答 3

6

您的 Web 服务器可能正在发送Content-Type带有不同charset. 这将优先于您的<meta>标签。curl使用(*nix system required)在命令行上确认这一点:

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

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

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

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

  2. 使用该函数在脚本中设置Content-Type标题。header()像这样:

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

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

于 2012-05-09T18:01:38.170 回答
1

正确的顺序是

<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'); 
于 2012-05-09T18:03:17.147 回答
0

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

Get-ChildItem *.php -Recurse | ForEach-Object {
$content = $_ | Get-Content

Set-Content -PassThru $_.Fullname $content -Encoding UTF8 -Force}
于 2021-02-18T00:12:27.403 回答