3

我正在尝试在网站上放置一些中文文本,但是一旦将页面放在网上,而不是中文文本,我就会看到一排问号?????????? ??????????

我在 WAMP 服务器上测试了相同的页面,然后才将其上线(所有页面都有 php 扩展名)并且汉字显示很好,只有当页面从在线主机服务器请求时,我才能看到所有问号.

该页面包含(如果这有帮助):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4

4 回答 4

5

如果您使用某种数据库,请确保在查询数据库之前运行它(但在建立连接之后):

mysql_set_charset("utf8");
于 2010-06-24T17:05:06.613 回答
1

由于 PHP 中的 mysql_* 函数自 PHP 5.5.0 起已弃用,因此您可以执行的 SQL 与 mysql_set_charset 基本相同:

SQL SET character_set_client = utf8

这是让我的表单将 unicode 文本保存到 MySQL 的关键。在与 MySQL 服务器建立连接后立即执行该 SQL 查询。

于 2013-05-15T17:47:17.797 回答
1

实际的 HTTP 响应标头将始终覆盖 HTML<meta>标头。根据您的评论:

我对标头不太熟悉,这是工作页面的响应标头:

日期:2010 年 6 月 24 日星期四 05:24:23 GMT
服务器:Apache/2.0.63 (Win32) PHP/5.2.11
X-Powered-By: PHP/5.2.11
内容长度:3622
保活:超时=15,最大值=100
连接:保持活动
内容类型:文本/html;字符集=UTF-8
200 好
和非工作页面:
日期:2010 年 6 月 24 日星期四 05:26:54 GMT
服务器:阿帕奇
X-Powered-By: PHP/5.2.12
连接:关闭
传输编码:分块
内容类型:文本/html
200 好

看,非工作页面的 HTTP 响应标头有一个Content-Typeoftext/html 没有任何指定的字符集。它应该是text/html; charset=UTF-8

在向响应正文发出任何字符 (HTML)之前,您可以通过将以下行添加到PHP 页面的顶部来解决此问题。

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

更新:根据评论,上述原因似乎被排除在外。下一步检查;文件本身是否保存为 UTF-8?右键单击页面并查看源代码。问号也有吗?如果是这样,那么在 FTP 传输到主机期间出现了问题。选择二进制而不是文本/ASCII 或在 FTP 客户端设置中为传输的文本文件设置字符编码,然后重试。

于 2010-06-24T17:01:46.630 回答
0

我有一个类似的问题并且能够解决它。

我有通过 PHP 传递的网站内容。当我将其视为原始 HTML 文件时,它会正确显示字符,但如果我通过 PHP 传递它(在我的情况下,使用 auto_prepend_file),它会将字符变成问号。

解决方案是在 PHP 设置中关闭 detect_unicode。就我而言,我只是编辑了 .htaccess 文件以包含以下行:

php_value detect_unicode "0"

...中文字符开始正常显示。可能有使用 ini_set() 的等效解决方案。

希望这可以帮助。

于 2011-03-01T17:08:00.237 回答