打印功能的HTML页面编码

时间:2016-03-28 17:46:37

标签: php html apache encoding

我暂时没有完成PHP,所以如果它很简单,我会事先道歉。

我正在将基于PHP的站点迁移到共享的Web托管,并且它输出HTML标记的方式存在问题。让我们考虑以下代码片段,它从服务器上的文件中读取HTML并将其输出到Web浏览器:

$handle = @fopen($file_name, "rb");

$str = @fread($handle, filesize($file_name));
fclose($handle);

print $str;

由于某种原因,它取代了页面上的一些字符。就像它放置那个字符而不是撇号:

enter image description here

虽然从先前的网络托管服务器运行完全相同的代码看起来很正常:

enter image description here

知道我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:1)

这是一个编码错误,如果你的文字有一些特殊字符,某些编码类型不能正确识别它..

尝试将您的标题识别为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" />

UPD:

我已经对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"; 
    } 
} 
?> 

希望它有所帮助!

相关问题