PHP-php生成HTML页面后页面编码不对
各位好,请教个问题
我用
$s_fname = "tmps.php";
$o_fname = "index.html";
ob_end_clean();
ob_start();
include($s_fname);
$length = ob_get_length();
$buffer = ob_get_contents();
$buffer = eregi_replace("r","",$buffer);
ob_end_clean();
$fp = fopen($o_fname,"w+");
fwrite($fp,$buffer);
fclose($fp);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
确保你的代码文件和几个引用的文件本身是utf8编码的,使用记事本或editplus另存为时可以查看和修改文件的字符集。
用
fwrite($fp,$buffer);
写文件时,如果$buffer的内容编码是gbk,则最后文件的编码是gbk,$buffer的内容编码是utf8则文件编码是utf8;
看你问题的表现好像$buffer的内容不是utf8编码的,建议在写入之前将$buffer的内容通过iconv强制转换成utf8 试试!
话说,你的浏览器如果是硬修改成 gb2312 的话,浏览器就会忽略页面的 meta content 信息
另外推荐加上 dtd,让生成的页面有类似的信息,重点是 语言 和 字符集
<html xmlns='http://www.w3.org/1999/xhtml' dir='ltr' xml:lang="zh-CN">
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
然后就是用户浏览器的字符集要选择成 自动
更多相关设置,清查看 这里
更新
刚发现,你原始php代码里面有这么一句 (第八行)
$buffer = eregi_replace("r","",$buffer);
这样子会把所有输出的内容的 r 字符都干掉!!!
祝好,
斑驳敬上
在代码开始的地方加上:
header("Content-type: application/javascript; charset=utf-8");
内容如果还有中文用iconv转换一下试试