Zitat von
DGL-luke:
Der Euro ist ja #128
In irgendeinem kranken Windows-Zeichensatz vielleicht, aber nicht in
Unicode. Da ist es 0x20AC, und das ist das, was alcaeus oben auch schon hatte.
Zitat von
DGL-Luke:
Das kommt mir sowieso komisch vor, ich glaube, da hat Microsoft auch was getürkt.
Ja, haben sie. Die machen mit ihrem Zeichensatz (Windows-*) seit jeher, was sie wollen.
Zitat von
DGL-Luke:
Was ist denn € für ein Index in welcher Tabelle?
"€".
Zitat von
DGL_Luke:
Konvertiert UTF8_decode evtl. nur das Low-Set?
Dann wäre es kein UTF8_*code().
UTF8_(en)code() konvertiert zwischen ISO-8859-1 und UTF-8 hin und her. Wenn Das Eurozeichen bei dir 0x80 ist, benutzt du weder
Unicode, noch ISO-8895-1, sondern irgendwelchen proprietären Müll (Windows-1252) und guckst damit in die Röhre.
Wenn in einem String die Zeichenfolge "%u20AC" auftaucht, ist das kein UTF-8, mit irgendwelchen Standard-
Unicode-Schnickschnack-Funktionen wirst du da nicht weit kommen. "%u20AC" ist kein Zeichensatz oder eine Zeichenkodierung, sondern ein Mapping, genauer ein Escape-Sequenz, die Word-Zeichen (in dem Fall wohl UTF-16) auf Byte-Zeichensätze abbildet. Laut Dokumentation kommt die Funktion urldecode() nur mit %xx zurecht, also Byte-Zeichen, keine Word-Zeichen. Was du suchst ist eine Funktion, die UTF-16 in einen für PHP brauchbaren Zeichensatz umwandelt, oder eine Funktion die UTF-16-Strings in UTF-8-Strings transformiert (das ginge theoretisch auch in JavaScript, kommt drauf an, für was man einfacher eine fertige Funktion findet). Die UTF-(-Transformation findet sich im
Unicode-Standard. Das Euro-Zeichen wäre Beispielsweise in UTF-8als 0xE282AC kodiert.