php 输出到word乱码 如何解决-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

php 输出到word乱码 如何解决

2016-03-09 08:52:57 2986 1
<?php
class Word{  
    function start(){  
        ob_start(); //打开输出控制缓冲  
        echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"';  
        echo 'xmlns:w="urn:schemas-microsoft-com:office:word"';  
        echo 'xmlns="http://www.w3.org/TR/REC-html40">';  
    }  
    function save($path){  
        echo "</html>";  
        $data=ob_get_contents();    //返回输出缓冲区的内容  
        ob_end_clean();             //清空缓冲区并关闭输出缓冲  
        $this->writeFile($path,$data);   //将缓冲区内容写入word  
    }  
    function writeFile($fn,$data){  
        $fp=fopen($fn,"wb+");  
        fwrite($fp,$data);  
        fclose($fp);  
    }  
}  
$word=new Word();  
$word->start();  
//以下内容会保存在WORD文件中,可以使用HTML标签  
?>  
 <h1>直接用php创建word文档</h1>  
 作者:axgle  
<hr size=1>  
 <p>如果你打开data.doc,看到了这里的介绍,则说明word文档创建成功了。  
<p>  
不论是在什么操作系统下,使用本方法都可以直接用PHP生成word文档。绝对不是吹牛!  
就算是没有安装word,也能够生成word文件。  
当然了,生成的word文件可以用word,wps或者其他软件打开。  
<p>  
<b>使用方法:</b>  
<br>  
首先用$word->start()表示要生成word文件了。  
然后你可以输出任何的HTML代码,不论是从文件读过来再写到这里,  
还是直接在这里输出HTML,都没有关系。  

<p>等你输出完毕后,用$word->save($path)方法,其中$path是你想  
生成的word文件的名称(可以给出完整的路径).当你使用了$word->save()  
方法后,这后面的任何输出都和word文件没有关系了,也就是说word的生成  
工作就完成了。之后就和你平常使用php的方式一样拉。随便你输出什么东西,  
都直接在浏览器里输出,而不会写到word里面去。  
<p>这是本人想到的一个很有意思的方法,它的实现方法出人意料的简单,并且避免  
了对windows环境的依赖。  
<br>哈哈,很有意思吧?享受它吧!  
<hr size=1>  
<?php  
//以上内容会保存在WORD文件中  
$word->save("d:/wamp/www/up1/data.doc");//保存word并且结束.  
//以下内容正常输出在页面文件中  
header("Content-type:text/html;charset=utf-8");  
echo 'data.doc生成成功,请到目录下查看<br>';  
?>

这段代码是可以运行的,但是我想把中间的html格式输出的文字换成<?php $a?>类似的形式就变成乱码了,怎么解决呢?

取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 18:55:15

    用echo输出的中文显示成乱码,
    其实应该是各种服务器脚本都会遇到这个问题,
    根本还是编码问题,
    一般来说出于编码兼容考虑大多的页面都将页面字符集定义为utf-8
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    这时候要正常显示中文需要转化一下编码方式,比如
    echo iconv("GB2312","UTF-8",'中文');就不会乱码了
    还有其他方法,比如
    在php的echo前面加入header("Content-Type:text/html;charset=gb2312");
    当然简体中文页面也可以干脆地,
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />中的UTF-8改成gb2312
    实际中遇见奇怪的现象,
    在本机服务器上正常显示的页面,传上服务器就echo出来乱码,
    没仔细琢磨过这个缘由,因为通过iconv函数GB2312、UTF-8换换位置重新编码下就正常了,
    不过估计肯定是APACHE,更确切说是PHP服务端的设置不同造成的,
    看看PHP.INI应该就能解决。

    0 0
相关问答

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 233735浏览量 回答数 170

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 159989浏览量 回答数 145

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148935浏览量 回答数 22

3

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 133549浏览量 回答数 3

34

回答

Win Server 2003-2016 加密勒索事件必打补丁合集

妙正灰 2017-05-15 10:44:38 283912浏览量 回答数 34

39

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 263600浏览量 回答数 39

295

回答

Linux Bash严重漏洞修复紧急通知(已全部给出最终修复方案)

qilu 2014-09-25 13:26:50 438414浏览量 回答数 295

251

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 310257浏览量 回答数 251

97

回答

Redhat/CentOS一键安装web环境全攻略

xiaofanqie 2011-08-11 14:51:38 125065浏览量 回答数 97

23

回答

【精品问答合集】Redis热门问答

李博 bluemind 2019-05-29 16:36:15 131198浏览量 回答数 23
2710
文章
6591
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载