HTML 打印功能的页面编码
HTML page encoding for print function
我有一段时间没做 PHP 所以如果事情很简单,我提前道歉。
我正在将一个基于 PHP 的站点迁移到一个共享的虚拟主机,它输出 HTML 标记的方式存在问题。让我们考虑以下从服务器上的文件读取 HTML 并将其输出到 Web 浏览器的代码片段:
$handle = @fopen($file_name, "rb");
$str = @fread($handle, filesize($file_name));
fclose($handle);
print $str;
出于某种原因,它替换了页面上的一些字符。就像它把那个字符而不是撇号一样:
当来自以前的网络托管服务器的完全相同的代码 运行 时看起来很正常:
知道我错过了什么吗?
这是一个编码错误,如果您的文本有一些特殊字符,某些编码类型无法正确识别它..
尝试让你的 header 识别 utf-8 编码,将这个(在你的 php 标签内,开头!)添加到你的代码中
header('Content-Type: text/html; charset=utf-8');
file_put_contents($myFile, "\xEF\xBB\xBF". $content);
并将此元标记添加到您的 html 头部
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
更新:
我对 php 参考文献 (http://php.net/manual/en/function.fopen.php#104325) 做了一些研究,我发现了一些东西!尝试使用此 php 函数来解决您的问题:
<?php
function utf8_fopen_read($fileName) {
$fc = iconv('windows-1250', 'utf-8', file_get_contents($fileName));
$handle=fopen("php://memory", "rw");
fwrite($handle, $fc);
fseek($handle, 0);
return $handle;
}
?>
使用示例:
Example usage:
<?php
$fh = utf8_fopen_read($filename);
while (($data = fgetcsv($fh, 1000, ",")) !== false) {
foreach ($data as $value) {
echo $value . "<br />\n";
}
}
?>
希望对您有所帮助!
我有一段时间没做 PHP 所以如果事情很简单,我提前道歉。
我正在将一个基于 PHP 的站点迁移到一个共享的虚拟主机,它输出 HTML 标记的方式存在问题。让我们考虑以下从服务器上的文件读取 HTML 并将其输出到 Web 浏览器的代码片段:
$handle = @fopen($file_name, "rb");
$str = @fread($handle, filesize($file_name));
fclose($handle);
print $str;
出于某种原因,它替换了页面上的一些字符。就像它把那个字符而不是撇号一样:
当来自以前的网络托管服务器的完全相同的代码 运行 时看起来很正常:
知道我错过了什么吗?
这是一个编码错误,如果您的文本有一些特殊字符,某些编码类型无法正确识别它..
尝试让你的 header 识别 utf-8 编码,将这个(在你的 php 标签内,开头!)添加到你的代码中
header('Content-Type: text/html; charset=utf-8');
file_put_contents($myFile, "\xEF\xBB\xBF". $content);
并将此元标记添加到您的 html 头部
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
更新:
我对 php 参考文献 (http://php.net/manual/en/function.fopen.php#104325) 做了一些研究,我发现了一些东西!尝试使用此 php 函数来解决您的问题:
<?php
function utf8_fopen_read($fileName) {
$fc = iconv('windows-1250', 'utf-8', file_get_contents($fileName));
$handle=fopen("php://memory", "rw");
fwrite($handle, $fc);
fseek($handle, 0);
return $handle;
}
?>
使用示例:
Example usage:
<?php
$fh = utf8_fopen_read($filename);
while (($data = fgetcsv($fh, 1000, ",")) !== false) {
foreach ($data as $value) {
echo $value . "<br />\n";
}
}
?>
希望对您有所帮助!