<html>
<head>
<title>тест</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
我已经设置了元标记,但是每次我打开浏览器(Chrome)时,我都必须去Tools -> Encoding
设置编码UTF-8
才能使其工作。
有没有办法避免这一步,以便浏览器显示正确的 UTF-8?
您的 Web 服务器可能正在发送Content-Type
带有不同charset
. 这将优先于您的<meta>
标签。curl
使用(*nix system required)在命令行上确认这一点:
curl -i http://example.com/yourpage.php
查看响应开头的 http 标头并找到Content-Type
标头。
您可以通过以下几种方式解决此问题:
配置您的 Web 服务器(我猜是 Apache)以发送适当的字符集。请参阅Apache 文档以获取AddDefaultCharset
.
使用该函数在脚本中设置Content-Type
标题。header()
像这样:
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。之后,您需要再次将文件上传到网络服务器。
Get-ChildItem *.php -Recurse | ForEach-Object {
$content = $_ | Get-Content
Set-Content -PassThru $_.Fullname $content -Encoding UTF8 -Force}