问题是程序有不同的方式来表示不同的字符。这称为字符编码。您的浏览器、服务器和 PHP 代码目前对您使用的编码感到困惑,因为您将UTF-8
字符与ANSI
代码混合在一起。
您可以在此处了解有关编码的更多信息:http:
//vlaurie.com/computers2/Articles/characters.htm
每当我构建一个 UTF-8 PHP 站点时,我都会做三件事。这三件事应该可以解决您的问题:
添加 PHP UTF-8 标头
将此添加到代码的顶部:
<?php
header('Content-Type: text/html; charset=utf-8');
...
我相信这会指示其他服务器和您的浏览器使用 UTF-8 而不是 ANSI 解析此文档。您可以在此处阅读有关此内容的更多信息:
使用 PHP 将 HTTP 标头设置为 UTF-8
添加 HTML UTF-8 元标记
将此代码添加到您返回的 HTML 的顶部:
<!doctype html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
...
这也指示您的浏览器以 UTF-8(而不是 ANSI)读取字符。您可以在此处阅读有关此内容的更多信息:
使用 PHP 将 HTTP 标头设置为 UTF-8
将 PHP 文件另存为不带 BOM 的 UTF-8
默认情况下,您的文件通常以正确ANSI
编码. If you want to work with international characters, then you need to save them in
的 UTF-8 encoding. This will let you work with the
Å` 字符保存。
如果您使用 Notepad++ 作为文本编辑器,那么您可以在“编码”菜单下设置文档的编码。将其设置为Encode in UTF-8 without BOM
。
明白了
UTF-8 without BOM
不是一回事UTF-8
。UTF-8 文件通常带有 3 个字节的数据,表明该文件是 UTF-8 文件。这称为Byte Order Mark
(BOM)。您可以在此处阅读有关 BOM 的更多信息:http ://www.arclab.com/products/amlc/utf-8-php-cannot-modify-header-information.html
大多数程序都可以分辨出文件是 UTF-8 的,因此 BOM 是多余的。如果您在没有 BOM 的情况下不保存,您可能会收到如下错误消息:
Warning: Cannot modify header information – headers already sent
如果您看到此错误消息,那么您可能遇到了 BOM 问题。