PHP -使用fwrite编写特殊字符-在记事本中看起来很好,但在浏览器中就错了


PHP - writing special characters with fwrite- looks good in notepad but wrong in browser

我在用PHP编写特殊字符(丹麦语,但也有一些符号)文本到.txt文件时有一个小问题。举个例子:

<?php
$words = "å æ ø"; 
$file = fopen("test.txt","w");
fwrite($file, ($words));
fclose($file);
?>

上面的代码将工作良好,看起来正确,当我打开它在记事本。但是出于在线目的,我需要使用浏览器(fx)打开生成的.txt文件。在浏览器中,除非我从Firefox的显示菜单中选择"Unicode"作为"字符编码",否则字符无法正确显示,Firefox的默认字符编码是"western"。

如果我用记事本创建一个普通的。txt文件,并写上"æ ø",并以正常的方式保存它,它在浏览器中看起来是正确的。

我一直在寻找关于fwrite编码选项的信息,但我真的不知道从哪里开始。

亲切的问候

解决方案如下:由于UTF-8字节顺序标记为''xef'xbb'xbf',我们应该将其添加到文档的标题中。

<?php
    function writeStringToFile($file, $string) {
       $f = fopen($file, "wb");
       $string= "'xEF'xBB'xBF".$string; // utf8 bom
       fputs($f, $string);
       fclose($f);
     }
?>

阅读BOM