如何在PHP中设置文本文件编码?

Pro*_*zip 9 php encoding text utf-8 character-encoding

如何在PHP中设置文本文件ENCODING(例如UTF-8)?

让我告诉你我的问题.这是我的代码:

<?php 
file_put_contents('test.txt', $data); // data is some non-English text with UTF-8 charset
?>
Run Code Online (Sandbox Code Playgroud)

输出:اÙ!

fwrite() 有类似的输出.

但是当我创建test.txtby记事本并设置字符集UTF-8时,输出就是我想要的.我想在PHP文件中设置charset.

现在这是我的问题:如何通过PHP设置文本文件编码?

Jon*_*oni 18

在文件中存储文本时,PHP不应用编码:它完全按照字符串中的布局存储数据.

您提到在打开文件时遇到问题notepad.exe.那个文本编辑器不太擅长猜测你正在打开的文件的编码; 如果文本以UTF-8编码,则必须选择将其打开为UTF-8.尽可能使用其他文本编辑器.Notepad ++是一种流行的替代品.

notepad.exe作为最后的手段,如果你必须在写任何其他内容之前在文件中写一个字节顺序标记 ; 这将使它将文件识别为UTF-8,同时可能使文件无法用于其他目的(有关详细信息,请参阅Wikipedia文章).

file_put_contents("file.txt", "\xEF\xBB\xBF" . $data);
Run Code Online (Sandbox Code Playgroud)


The*_*pha 10

您可以使用mb_convert_encoding尝试此操作

$data = mb_convert_encoding($data, 'UTF-8', 'auto');
file_put_contents('test.txt', $data);
Run Code Online (Sandbox Code Playgroud)

还要检查iconv.

更新:(试试这个,找到适合您文字的编码)

foreach(mb_list_encodings() as $chr){ 
    echo mb_convert_encoding($data, 'UTF-8', $chr)." : ".$chr."<br>";    
}
Run Code Online (Sandbox Code Playgroud)

另外,在GitHub上试试这个.