0

我正在尝试将 HTML 保存到 .html 文件中,

这是有效的:

$html_file = "output.html";
$output_string="string with characters like ã or ì";
$fileHandle = fopen($html_file, 'w') or die("file could not be accessed/created");
fwrite($fileHandle, $output_string);
fclose($fileHandle);

当我检查 output.html 文件时,我的 output_string 中的这些特殊字符没有被正确读取。

我的 HTML 文件不能<head>带有字符集信息的标签,这使它工作,但我的输出不能有任何<html>,<head><body>标签。

我尝试过类似的东西

header('Content-type: text/plain; charset=utf-8');

我还在 fwrite 之前在字符串上尝试了utf8_encode(),但到目前为止没有成功。

如果我在 Notepad++ 或 Netbeans IDE 中读取 output.html 文件,它会显示正在保存的正确字符,是浏览器没有正确读取它们。

我很确定 PHP 正在使用不正确的字符集保存我的文件,因为如果我在计算机中使用这些特殊字符(即使没有任何字符集设置)创建 HTML 文件,这些都可以正确读取。

4

4 回答 4

3

尝试将 BOM(字节顺序标记)添加到您的文件中:

$output_string = "\xEF\xBB\xBF";
$output_string .= "string with characters like ã or ì";
$fileHandle = // ...
于 2012-12-18T12:04:30.640 回答
1

是的,PHP 正在正确写入文件,只有读取程序不知道它是什么字符编码,并使用错误的字符集解释数据。如果您不能包含传达正确字符集的元信息,并且文件格式本身(纯文本)不提供指定字符集的方法,并且如果阅读应用程序无法正确猜测字符集,那么就没有解决方案。

于 2012-12-18T12:03:52.607 回答
0

无论您使用什么编辑器来编写此代码,都必须能够将字符类型设置为“UTF-8”。

设置您编写此代码的文件的字符类型。我正在使用一个允许从底部更改文件的字符编码的编辑器。您正在使用的编辑器必须有类似的东西。

于 2012-12-18T12:04:59.500 回答
0

如果您需要 UTF-8 中的字符串而不管 php-script-file-encoding (如果它是单字节的),您应该使用这些字符的 UTF-8 编码:

$output_string = "string with characters like \xC3\xA3 or \xC3\x8C";
于 2012-12-18T12:07:52.010 回答