PHP写入到文本文件乱码

Posted

tags:

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

我写了一段小程序,先是读入一个文本文件,经过字符处理后再输出到一个文本文件,但是输出以后成了乱码吗,怎么回事,
<?php
$arr = file("school.txt");

foreach ($arr as $value)

$search = array("[","]");
$replace = array("","");

//替换
$string = str_replace($search, $replace, $value);
//附加分号和换行
$string = $string.";"."\r\n";
//写入文件
$fp = fopen("schools.txt", "ab");
if(!$fp)

echo "文件打开错误";
exit;

fwrite($fp,$string);
fclose($fp);


?>
只有汉字是乱码,英文和数字都显示正常

  php处理中文编码老是有问题,这是编码的问题,可以将txt文件另存为UTF-8的编码再处理;

  参考如下:

function file_utf8($filepath)
    $f_contents= file_get_contents($filepath);
    
    $encoding = mb_detect_encoding($f_contents, array(\'GB2312\',\'GBK\',\'UTF-16\',\'UCS-2\',\'UTF-8\',\'BIG5\',\'ASCII\'));

    $content_u="";
    $handle=fopen($filepath,"r");
    if ($handle)
        while (!feof($handle)) 
            $buffer= fgets($handle);
            if ($encoding != false) 
                if (mb_detect_encoding($buffer)!=\'UTF-8\')
                    $buffer = iconv($encoding, \'UTF-8\', $buffer);
                
            else
                    $buffer = mb_convert_encoding ( $buffer, \'UTF-8\',\'Unicode\');
            
            $content_u.=$buffer;
        
        fclose($handle);
        return $info=array(\'status\'=>1,\'message\'=>$content_u);
    else
        return $info=array(\'status\'=>0,\'message\'=>\'打开文件失败\');
    
参考技术A 首先看你网页编码是什么,一般本地计算机都是GB2312编码 如果你使用其它可能就会产生乱码 参考技术B 显然你的字符集没有设置好~
<?php
$arr = file("school.txt");

foreach ($arr as $value)

$search = array("[","]");
$replace = array("","");

//替换
$string = str_replace($search, $replace, iconv("utf-8","GB2312",$value));
//附加分号和换行
$string = $string.";"."\r\n";
//写入文件
$fp = fopen("schools.txt", "ab");
if(!$fp)

echo "文件打开错误";
exit;

fwrite($fp,$string);
fclose($fp);
参考技术C 字符编码不对

php写入数据到mysql数据库中出现乱码解决方法

乱码情况:

在选择数据库前加入一句代码即可

mysql_query("set names utf8");

最后效果

以上是关于PHP写入到文本文件乱码的主要内容,如果未能解决你的问题,请参考以下文章

为啥C语言输出文件内容乱码

php5.0 使用 fgets()函数是读取中文文件,显示乱码,求解谢谢

写入中文字符乱码

PHP解决中文乱码问题

如何解决MySQL字符集乱码问题

php写入数据到mysql数据库中出现乱码解决方法