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