我试着这样做: file_put_contents($ file_name,utf8_encode($ data)); 但是当我使用linux命令从shell检查文件编码时:'file file_name' 我得到:'file_name:ASCII text'
这是否意味着utf8_encoding不起作用?如果是这样,从ASCII转换为UTF8的正确方法是什么
答案 0 :(得分:1)
如果您的字符串不包含任何非ASCII字符,那么您可能不会看到差异,因为UTF-8向后兼容ASCII。试着写一下,例如,文字“1000さくら”,看看会发生什么。
答案 1 :(得分:1)
请注意,utf8_encode仅转换编码的字符串 ISO-8859-1至UTF-8。一个更恰当的名称 “iso88591_to_utf8”。如果你的文字没有用ISO-8859-1编码,你可以 不需要这个功能。如果您的文本已经是UTF-8,则不会 需要这个功能。实际上,将此函数应用于文本 没有在ISO-8859-1中编码,很可能只是简单地将该文本弄乱。
如果您需要将文本从任何编码转换为任何其他编码, 相反,请查看iconv()。
答案 2 :(得分:1)
ASCII是UTF-8的子集,因此如果文档是ASCII,则它已经是UTF-8
答案 3 :(得分:0)
试试这个:
$data = mb_convert_encoding($data, 'UTF-8', 'ASCII');
file_put_contents ( $file_name, $data );
或使用它来更改文件编码:
$fd = fopen($file, 'r');
stream_filter_append($fd, 'convert.iconv.UTF-8/ASCII');
stream_copy_to_stream($fd, fopen($output, 'w'));