2012-01-25 108 views
1

我从页面获取UTF-8文本行,然后转储到文件中。原始页面中的文字显示正常。但是,输出文件中的文本出现乱码!读取UTF-8文本行并将它们写入文件

我尝试:

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$pageContent = file_get_contents("page.html"); 
//Here: use regex to grab the title ... 
$stringData = $title."\n"; 
fwrite($fh, utf8_encode($stringData)); 
fclose($fh); 

之前任何内容写入文件。我将文件保存为UTF-8,我也保存它为Unicode,我仍然得到密文为:

ÊãäíÇÊíááÌãíÚ

我没有使用PHP5

任何帮助将不胜感激...

+0

'我没有使用PHP5' - 对此有没有什么可以做的? PHP4绝望地过时并且不支持许多安全功能。我知道这并不总是可以升级(我有一个特定的平台,我自己有这个永久性的问题),但如果你可以升级,你绝对必须... – DaveRandom

+0

暂时不使用PHP5 ... – user311509

回答

7

请勿使用utf8_encode

对不起,这只是被滥用的方式太频繁。
您的文本已经在UTF-8中。*您不需要再次将其编码为UTF-8。
utf8_encode Latin1编码的文本转换为UTF-8。您的文本不是Latin1编码的。这就是为什么它拧紧。只需读写文本,完成。不需要编码转换或重新编码。

*假设page.html是以UTF-8编码的。从你所说的话来看,似乎是这样。

+0

我想你应该补充一点,争夺OP看到的字符可能是在非utf8查看器中查看utf8输出的结果(如可能是命令行)。 [附注:你对我的帖子完全正确,我有一个脑袋;后删除] –

+0

工作........ – user311509

0

它看起来像你是双重编码。如果您阅读了utf8_encode文档,您会发现它旨在将ISO-8859-1字符串编码为UTF-8。如果你已经有了一个UTF-8字符串,你不应该在其上运行这个函数;否则它会将其解释为ISO-8859-1并执行不正确的编码。

相关问题