Hallo,
wird denn deine Seite als utf8 angezeigt?? Falls nicht, würde ich dir empfehlen, sie so zu gestalten, das löst so einige Probleme, wenn man das konsequent macht. Dazu gehört nämlich, dass Formulardaten mit utf8-Kodierung übertragen werden und so direkt in die Datenbank eingegeben werden können.
Da ich mit verschiedenen Datenquellen arbeiten muss, habe ich mir eine Funktion geschrieben, die nur bei Bedarf einen Text in utf8 umwandelt (also wenn es nicht schon in utf8 vorliegt):
function is\_validUTF8($str)
{
// values of -1 represent disalloweded values for the first bytes in current UTF-8
static $trailing\_bytes = array (
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
);
$ups = unpack('C\*', $str);
if (!($aCnt = count($ups))) return true; // Empty string \*is\* valid UTF-8
for ($i = 1; $i 0 && $i 0x9F) return false;
break;
case 0xF0:
if ($cbyte 0x8F) return false;
break;
default:
break;
}
$first = false;
}
$tbytes--;
}
if ($tbytes) return false; // incomplete sequence at EOS
}
return true;
}
function repair\_utf8($string)
{
if (is\_validUTF8($string))
return $string;
else return utf8\_encode($string);
}
Damit kannst du sicherstellen, dass alle Daten, die zum Browser geschickt werden in utf8 codiert sind!
Gruss, Omar Abo-Namous