【问题标题】:Php - fwrite bad charactersphp - fwrite 坏字符
【发布时间】:2013-12-10 12:14:01
【问题描述】:

我在使用 file_get_contents 和 fwrite 时遇到问题。

要让脚本正常工作,我必须将外部 URL 中的内容打印到 html 文件中。

我正在使用此代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>

<?php
$url = 'http://www.vasttrafik.se/nasta-tur-fullskarm/?externalid=9021014005135000';
$content = file_get_contents($url);  
echo $content; // Actually writes out correct

$myFile = "response.php";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $content); // Doesn't write out correct ???
fclose($fh);
?>

</body>
</html>

当我回显 file_get_contents 时,HTML 显示得很好(带有瑞典特殊字符:åäö)

但是..文件“response.php”显示坏字符而不是åäö。

有什么想法吗? fwrite 是否使用其他编码? 谢谢!

更新! 解决了这个问题:

$content = "\xEF\xBB\xBF";
$content .= utf8_encode(file_get_contents($url));  

【问题讨论】:

  • 您是如何检查该文件中的结果的?
  • @Dugi:没有帮助:/ deceze:当我回显 $content 时,它起作用了。但是当我浏览“response.php”时,这些字母:“åäö”很奇怪。是的,当我运行这个脚本时,文件 response.php 会更新

标签: php special-characters file-get-contents fwrite


【解决方案1】:

解决了!

我需要添加 BOM(字节顺序标记)和 utf8_encode。

像这样:

$content = "\xEF\xBB\xBF";
$content .= utf8_encode(file_get_contents($url));  

【讨论】:

  • 您所做的是使输出与您用于读取文件的任何内容兼容 - 文件中的数据从未被错误写入。
猜你喜欢
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多