PHP生成TXT文件时乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP生成TXT文件时乱码相关的知识,希望对你有一定的参考价值。

在网上找了一个php代码用来统计蜘蛛访问日志,代码如下
<?php
date_default_timezone_set('Asia/Shanghai');

function get_naps_bot()

$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (strpos($useragent, 'baiduspider') !== false)
return 'Baiduspider';


return false;


function nowtime()
$date=date("Y年m月d日 G点i分s秒");

return $date;


$searchbot = get_naps_bot();

if ($searchbot)
$tlc_thispage = addslashes($_SERVER['HTTP_USER_AGENT']);
$url=$_SERVER['HTTP_REFERER'];
$file="logs.txt";
$time=nowtime();
$data=fopen($file,"a");
fwrite($data,"Time:$time robot:$searchbot URL:$tlc_thispage\n");
fclose($data);

?>
现在问题是TXT日志能够正常生成,但是中文输出却是乱码
Time:2011骞?3链?5镞?12镣?4鍒?0绉?robot:Baiduspider
能不能强制定义PHP输出字符为utf8格式?

参考技术A 编码问题
把 $time 的编码转换一下
即 把 $time=nowtime(); 改成 $time=iconv('utf-8','gbk', nowtime());本回答被提问者采纳
参考技术B 直接用此即可:
header("Content-type: text/html; charset=utf-8");在开头
参考技术C header("Content-type: text/html; charset=UTF-8"); 页面头部加上试试。追问

试过了,但是不行,仍然显示错误,郁闷的是把txt拿到本地看的话又是正常的。

追答

就是说,txt文件没有乱码,但显示不出来吗?

追问

生成的TXT在网页上看起来就是乱码,取回本地看就是正常。

追答

读取txt文件的页面有没有编码定义?

类似这样的。

另外看下,txt的文件是utf-8还是ansi的。

C. PHP读取TXT中文乱码的解决方法

 

PHP读取TXT中文乱码的解决方法

 2203人阅读 评论(0) 收藏 举报

     //$fname文件名称

   if ($fname = $_FILES[‘nickname‘][‘tmp_name‘]) {


          //file_get_contents() 函数把整个文件读入一个字符串中。

          $contents = file_get_contents($fname);

             //获取文件的编码方式

          $encoding = mb_detect_encoding($contents, array(‘GB2312‘,‘GBK‘,‘UTF-16‘,‘UCS-2‘,‘UTF-8‘,‘BIG5‘,‘ASCII‘));

 

          $fp=fopen($fname,"r");//以只读的方式打开文件

          $text = "";

          $num = 0;

          if(!(feof($fp))) {

              $num++;

              $str = trim(fgets($fp));

              if ($encoding != false) {

          //iconv ()将$encoding 转换成“UTF-8”

                  $str = iconv($encoding, ‘UTF-8‘, $str);

                  if ($str != "" and $str != NULL) {

                      $text = $str;

                  }

              }

              else {

                  $str = mb_convert_encoding ( $str, ‘UTF-8‘,‘Unicode‘);

                  if ($str != "" and $str != NULL) {

                      $text = $str;

                  }

              }

          }

          while(!(feof($fp))) {

              $str = ‘‘;

              $str = trim(fgets($fp));

              if ($encoding != false) {

                  $str = iconv($encoding, ‘UTF-8‘, $str);

                  if ($str != "" and $str != NULL) {

                      $text = $text.",".$str;

                  }

              }

              else {

                  $str = mb_convert_encoding ( $str, ‘UTF-8‘,‘Unicode‘);

                  if ($str != "" and $str != NULL) {

                      $text = $text.",".$str;

                  }

              }

          }

      }







以上是关于PHP生成TXT文件时乱码的主要内容,如果未能解决你的问题,请参考以下文章

如何快速清除TXT文件里乱码的文字?

C. PHP读取TXT中文乱码的解决方法

PHP生成TXT文件

第一篇-Win10打开txt文件出现中文乱码

怎么解决读取txt文件读取时中文乱码问题

PHP文件另存为TXT问题?