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.Firefox)打开生成的.txt文件,并且在浏览器中,除非我从节目中选择"Unicode"作为"character encoding",否则字符不会正确显示- Firefox 中的菜单,Firefox 中的默认字符编码是 "western".

如果我用记事本制作一个普通的 .txt 文件并写入“å æ ø”并以正常方式保存它,它在浏览器中看起来是正确的。

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

亲切的问候

解决方法如下:由于UTF-8 byte-order标记是'\xef\xbb\xbf'我们应该把它添加到文档的header.

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

read about BOM