使用下面的代码查询mysql数据库后,我已经生成了一个html文件:
$myFile = "page.htm";
$ fh = fopen($ myFile,'w')或die(“无法打开文件”);fwrite($ fh,$ row ['text']);fclose($ fh);
在msql数据库上,使用utf8_general_ci对文本进行编码。但是我需要将其包含在php网页中,如下所示:
<?include('page.htm');?>
请记住,PHP网页在标题上使用utf8字符集:
<meta http-equiv="content-type" content="text/html; charset=utf8" />
现在,如果我在数据库上写一些带有重音符号(èàì)或引号的字母,然后直接打开page.htm,然后在数据库上我就看到一切正常,但是当我在php页面上查看时我看到一个问号-字符,而不是我最初想要的字符。为什么?!预先感谢!
问题是html页面的编码实际上是由http响应标头'Content-Type'设置的,要修复您需要做的是在任何输出之前(例如,在顶部)将以下内容添加到PHP文件中。
<?php
header('Content-Type: text/html; charset=utf8');
为澄清起见,它应该在包含您的html文件的PHP中,不是在您包含的html文件中:)
侧边:
META字符集并不总是能解决问题。确保您的IDE保存了真实的UTF-8文件。对于Dreamweaver中的示例,请按CTRL-J,然后选中“标题/编码”选项。
我解决了在包含附件的php网页中添加此header('Content-Type: text/html; charset=iso-8859-1');
的问题。我不知道为什么会这样。我从未使用过iso-8859-1字符集。还是谢谢!
如果从数据库中获取内容,并且会莫名其妙地更改字符集,请注意,在Php中,与数据库的实际连接字符集需要显式设置为utf8(如果您使用的是该字符),否则在传输时转换内容,即使数据库本身的内容格式正确。.一个有趣的怪癖;)
例如:mysql_select_db($ database,$ connect);mysql_set_charset('utf8',$ connect); //设置连接字符集。
问题可能出在您的mySQL数据库或数据库连接中设置了错误的编码。
如果表都是100%utf8_general_ci
,请在执行任何查询之前尝试执行mysql_query("SET NAMES utf8;");
:这会将连接设置为UTF-8。
关于您的代码的一点:
[当使用include时,它是一个php代码,因此您应包括一个php文件,而不是htm文件:
<?include('page.php');?>
尝试更改扩展名,直到现在我都不知道您的代码如何工作:)
尝试单独包含块。前mainpage.php:
<?php
include("php1.php");
?>
<?php
include("php2.php");
?>enter code here
我知道我要OP迟到10年,但是我遇到了同样的问题。我正在做一个包含php文件的文件(我想它与html文件是一样的),但不会显示utf-8。我无法使用元数据,因为显示html之后出现了此包含内容。
我的解决方法:
我希望这会有所帮助,我认为原始文件中的一些元数据很简单。但这是一个猜测。