PHP写入到文本文件乱码
我写了一段小程序,先是读入一个文本文件,经过字符处理后再输出到一个文本文件,但是输出以后成了乱码吗,怎么回事,<?php$arr=file("school.txt");f...
我写了一段小程序,先是读入一个文本文件,经过字符处理后再输出到一个文本文件,但是输出以后成了乱码吗,怎么回事,
<?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
$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);
}
?>
只有汉字是乱码,英文和数字都显示正常 展开
4个回答
推荐于2016-06-17
展开全部
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'=>'打开文件失败');
}
}
展开全部
首先看你网页编码是什么,一般本地计算机都是GB2312编码 如果你使用其它可能就会产生乱码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显然你的字符集没有设置好~
<?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);
}
<?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);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字符编码不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询