2

使用以下代码时:

$myString = 'some contents';    
$fh=fopen('newfile.txt',"w");
fwrite($fh, "\xEF\xBB\xBF" . $myString);

使用 PHP 函数首先对文本进行编码(示例中为 $myString)是否有任何意义,例如运行utf8_encode($myString);或类似iconv()命令?

假设\xEF\xBB\xBF首先将 BOM 输入到文件中,并且 UTF8 几乎代表了世界上的所有字符,我看不到以这种方式创建文件的任何潜在失败场景。换句话说,我看不到任何主要文本编辑器都无法正确解释新创建的文件并按预期显示所有字符的情况。这即使$myString是来自 HTML 表单的 PHP$_POST变量。我对吗?

4

2 回答 2

1

如果你的源文件是UTF-8编码的,那么字符串$myString也是UTF-8编码的,你不需要转换它。否则,您需要先使用iconv()转换编码,然后再将其写入文件。

并且 noteutf8_encode()用于将 ISO-8859-1 字符串编码为 UTF-8。

于 2012-09-26T10:48:49.510 回答
0

请注意,这utf8_encode只会转换ISO-8859-1编码的字符串。

一般来说,鉴于 PHP 仅支持256 个字符的字符集,您需要对任何包含非 ASCII 字符的字符串进行 utf-8 编码,然后再将其写入 UTF-8。

BOM 是可选的(大多数文本文件阅读器现在将扫描文件以获取其编码)。

来自维基百科

Unicode 标准允许使用 UTF-8,[2] 的 BOM,但不要求也不推荐使用或反对使用它

于 2012-09-26T10:58:53.147 回答