如何在PHP中将ASCII编码的字符串转换为UTF8?

时间:2011-07-26 13:54:45

标签: php utf-8 ascii

我试着这样做: file_put_contents($ file_name,utf8_encode($ data)); 但是当我使用linux命令从shell检查文件编码时:'file file_name' 我得到:'file_name:ASCII text'

这是否意味着utf8_encoding不起作用?如果是这样,从ASCII转换为UTF8的正确方法是什么

4 个答案:

答案 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()。

请参阅http://php.net/manual/en/function.utf8-encode.php

答案 2 :(得分:1)

  

ASCII是UTF-8的子集,因此如果文档是ASCII,则它已经是UTF-8

发现于:Convert ASCII TO UTF-8 Encoding

答案 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'));

参考:How to write file in UTF-8 format?