Einzelnen Beitrag anzeigen

Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#12

Re: [PHP/JS] Unicode-Problem

  Alt 14. Apr 2006, 17:30
Zitat von Frickeldrecktuxer_TM:
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.
Ich weiß nicht, was du da mit dem Kaufmannsund und UTF8_decode() machst...

Der Fehler liegt hier auf der Seite eines kranken Mappings von JavaScript, da sollte man reparieren. Laut SelfHTML (http://de.selfhtml.org/javascript/ob...gig.htm#escape) sollte dein encode() ohnehin nur für ASCII-Zeichen funktionieren, daß er dir beim Euro-Zeichen überhaupt was ausgibt ist bereits (zumindest laut SelfHTML, es wird vielleicht irgendwo eine aktuellere Dokumentation geben) undefiniertes Verhalten. Das Beispiel zu encodeURI() sieht ganz brauchbar aus, oder besser: es verhält sich für den Beispielstring so, wie ich es erwarte (in einem Firefox 1.5 in einer UTF-8-Umgebung).
  Mit Zitat antworten Zitat