Hi,
das ist dann ein relativ sicheres Zeichen, dass der aus _dieser_ Quelle stammende Text eben _nicht_ in UTF-8 codiert ist, sondern vermutlich irgendeine 1-Byte-Codierung wie ISO-8859-x, so dass Bytesequenzen auftreten, die in UTF-8 ungültig sind.
Doch, die Eingabe ist in UTF-8 codiert, und ich habe jetzt auch die Ursache.
Ich möchte das erste Zeichen eines Strings verwenden für Vergleiche u.a., also
substr($text(0,1))
.
Das geht aber bei Umlauten schief:
<?php
header('Content-Type: text/html; charset=UTF-8');
echo <<<TXT
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
</head>
<body>
TXT;
$string='Apfel';
$key = substr($string,0,1);
echo "$key <br>"; // => A ok
$string='Äpfel';
$key = substr($string,0,1);
echo "$key <br>"; // => ? (hex'c3')
$key = substr($string,0,2);
echo "$key <br>"; // => Ä ok
echo <<<TXT
</body>
</html>
TXT;
?>
Nun weiß ich doch zunächst nicht, ob das gewünschte Zeichen ein Umlaut ist, um dann zu entscheiden, ob ich mit substr 1 oder zwei Bytes lese.
Wie löst man das am einfachsten?
Danke Steffen