Php在txt文件上写了奇怪的字符

时间:2014-05-04 21:31:32

标签: php

我对每个人,当我执行代码写入文件时:

$fileTXT = 'prodotti.txt';
$newfileTXT = 'prodotti_2'.date("d-m-Y_h_m_s").'.txt';

if (!copy($fileTXT, $newfileTXT)) {
    echo "Impossibile continuare, impossibile creare file TXT.";
    exit;
}


$towriteinfile = "";
$fp = fopen($path . $filename, "r") or die("Couldn't open $filename");
$fpTXT = fopen($newfileTXT, 'w') or die("Couldn't open $newfileTXT");

while (!feof($fp)) {
    $line = fgets($fp, 1024);
    $arr = explode("\t", $line);
    $arr[7] = '<img src="http://link/imgHigh/' . $arr[7] . '.jpg" />;';
    echo "Prodotto: ".$arr[4]."<br>";
    foreach ($arr as $fields) {
        fwrite($fpTXT, $fields.";");
    }
    fwrite($fpTXT, "\n");
}

fclose($fpTXT);
fclose($fp);

我在txt文件上有结果:

  

175; 13563; desc; 01;类别; ..............等等.....   mercato。㰻浩牳㵣柏瑴㩰睷⽴獯慬楴挮⽴⽴⽴⽴⽴䡧䡧樮樮樮樮樮樮樮•杰㸯㬻㬻㬻

图像的html代码写成中文caharcter,为什么?

3 个答案:

答案 0 :(得分:0)

是否要在$ filename?

的$ newFileTXT末尾添加内容?

如果是这样,你应该改变:

$fpTXT = fopen($newfileTXT, 'w') or die("Couldn't open $newfileTXT");

$fpTXT = fopen($newfileTXT, 'a') or die("Couldn't open $newfileTXT");

答案 1 :(得分:0)

该文件可能被解释为unicode(可能是UTF-8)。在unicode中,字符可以包含多个字节。当您读取文件时,您只读取1024个字节,这可能会导致您读取的部分末尾有一半的unicode字符,另一半则位于下一部分的开头。当你开始在中间添加新字符时,你会得到其他的unicode序列,导致文本完全混乱。

答案 2 :(得分:0)

我已经解决了这个问题,我已将任何一行传递给此函数:

function cleanString($string){
    $string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);

    return $string;
}

我的旧字符串包含二进制字符,我已经清理了字符串,现在一切正常