Stichy
Stichy

Reputation: 1515

Php - fwrite bad characters

I'm having a problem with file_get_contents and fwrite.

To get a script to work I have to print content from an external URL into a html file.

I'm using this code:

<!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>

When I echo out the file_get_contents, the HTML shows up nicely (with the Swedish special characters: åäö)

However.. The file "response.php" shows bad characters instead of åäö.

Any ideas? Does the fwrite use another encoding? Thanks!

UPDATE! Solved with this:

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

Upvotes: 0

Views: 816

Answers (1)

Stichy
Stichy

Reputation: 1515

SOLVED!

I needed to ad a BOM (Byte Order Mark) AND utf8_encode.

Like this:

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

Upvotes: 2

Related Questions