Jag har haft likande problem förut, denna kod löser ditt problem på ett bättre sätt:
Kod:
<?php
header("Content-type: text/html; charset=utf-8");
function is_utf8($string)
{
* /* From http://w3.org/International/questions/qa-f...orms-utf-8.html */
return preg_match('%^(?:[\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})*$%xs', $string);
}
$q = urldecode($_GET['q']);
if (!is_utf8($q)) $q = utf8_encode($q);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang="sv" lang="sv">
<head>
*<title>UTF-8 url decode test</title>
*<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
echo "Q = $q<br>";
?>
<form method="GET" ><input name="q" value=""><input type="submit"></form>
</body>
</html>
Har kört skriptet ovan på både Windows och Linux servrar.