PHP-php 读写txt文件出现乱码

项目合作 项目合作 主题:1030 回复:2135

PHP-php 读写txt文件出现乱码

夜无邪 发布于 2017-09-16 字数 311 浏览 1125 回复 4

在Windows下创建的TXT文件有四种编码可以选择
ANSI,UTF-8,Unicode,Unicode big endian。
现在我要将他们都转化成UTF-8编码格式(按行读取,逐行转换)。
遇到一个问题就是Unicode小尾端格式在按行读取时会出现问题,因为这种编码有可能会出现0axx的编码,导致按行读取因0a而被中断,后面出现乱码,求解决方式……

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(4

晚风撩人 2017-10-12 4 楼

把 GBK 编码字串转换成 UTF-8 编码字串
mb_convert_encoding("你是我的好朋友", "UTF-8", "GBK");

清晨说ぺ晚安 2017-10-04 3 楼

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'=>'打开文件失败');
}

}

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

瑾兮 2017-10-03 2 楼

文件很大不能直接全部读入一次转吗?即使是其他编码理论上也会有出现0a却不是代表换行的情况,最好的方法还是一次读入然后一起转。php貌似没有提供流式编码的接口,恐怕没有别的更好的办法了……

虐人心 2017-09-22 1 楼

你估计是没有转码而已.文本一般是ANSI的.你要转才行的.

例如:

iconv('utf-8','gb2312',$name);