首页 » 建站技术 » PHP 技术 » 浏览内容

PHP 生成 utf-8 文本文件


2012-06-17 21:44:48 2,219 0 发表评论 字体: 作者:C.K.

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

正在试着用WP做一个在线阅读的网站,想把网页转换成文本文件以备下载,虽然用 file_put_contents($filename, $content);很容易实现,只是生成的文本文件在IE下打开会乱码,在FF下倒是正常的。在IE下改变下编码也能正常显示,不过,总是不方便。

我用 $content=iconv("UTF-8","GBK//IGNORE",$content); 把内容先处理成GBK 再写入文件,这样倒是在IE下显示正常了,不过,在平板电脑的傲游下,又是乱码。

只好查询网络,下面这个原因比较靠谱: [参考来源]

我们原来做的只是把文本文件的内容转成utf-8的编码,却没有在写txt文件的时候采用utf-8的记事本的格式进行写文件。

utf-8需要头:初始的三个字节为0xef,0xbb,0xbf;而unicode不需要。这些可以通过自己建txt文档按照相应的编码方式保存,然后用UE打开,察看十六进制的数据可以看得出来的。

所以在写入文件前,如果先写入这三个字节就可以满足IE等的需求。:

<?php
  • function post2txt($post_id) {
  • $book=get_post($post_id);
  • $book_title=strip_tags ($book->post_title);
  • $book_content=strip_tags($book->post_content);
  • $book_time =strtotime($book->post_date); //获取文章时间
  • $filepath = "/wp-content/books/".date("Y",$book_time)."/".date("m",$book_time)."/"; //书籍保存目录
  • $filename=$_SERVER['DOCUMENT_ROOT'].$filepath.'book_'.$book->ID.".txt";
  • //关键前面要加 \xEF\xBB\xBF 这三个字节
  • $content="\xEF\xBB\xBF".$book_title."\r\n\r\n".$book_author."\r\n\r\n".$book_content;
  • file_put_contents($filename, $content);
  • }
  • add_action('save_post','post2txt');
  • ?>
  • 经测试,这三个字节很有效。

    网站统计 Statistics

    • 创建时间: 2005年1月3日 距今5063 天
    • 日志总数: 2461
    • 评论总数: 630
    • 标签总数: 654
    • 链接总数: 273
    • 最后更新: 2018-8-31 17:57:04
    • 您是本站第 14150952 位访客

    广告区 Guǎng Gào