"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

URL Encoding ist UTF-8 oder doch nicht?

sliver33 30.07.2004 - 10:58 1521 15
Posts

sliver33

Big d00d
Avatar
Registered: Sep 2001
Location: Alkoven
Posts: 273
Hallo

Ich hab folgendes problem:
Ich muss einen String mit ß an eine Webseite aus JAVA heraus schicken. Deshalb kodiere ich ihn mit UTF-8 aber anstatt das %DF ankommt wird ß mit %C3%9F kodiert.

Zum Kodieren verwende ich URLEncoder.encode(str, "UTF-8");

Heißt das Encoding anders oder wie bekomme ich ein %DF?

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4420
%DF ist der Hex-latin1 Code fuer ß. UTF-8, wenn wir jetzt von UCS-2 ausgehen, verwendet fuer die nicht 7-bit ASCII Zeichen zwei Byte zur Codierung (wenn es sich ausgeht), also paszt %C3%9F eh.
Bearbeitet von Rektal am 30.07.2004, 11:52

sliver33

Big d00d
Avatar
Registered: Sep 2001
Location: Alkoven
Posts: 273
laut standard passts eh aber ich brauch für die Seite an die ichs schick %DF

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4420
Dann darfst dus nicht UTF-8 encoden sondern latin1 ;)

sliver33

Big d00d
Avatar
Registered: Sep 2001
Location: Alkoven
Posts: 273
Ok danke hat jetzt funktioniert ... Aber normal is doch UTF-8 Kodierung bei URLs oder kann man sich das auch aussuchen?

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Was hat das mit URLs zu tun?

Normalerweise schreibt man in den Header rein, welches Encoding man verwendet (iso-8859-1 = latin1)

EDIT: Sonst kriegen viele Unix-Benutzer nur Fragezeichen statt Umlauten zu sehen.

EDIT2: Aso, es geht echt um die URL. Keine Ahnung, wie das normal gehandhabt wird.
Bearbeitet von Ringding am 30.07.2004, 12:37

sliver33

Big d00d
Avatar
Registered: Sep 2001
Location: Alkoven
Posts: 273
meinst du den header vom http request?

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Hängt anscheinend davon ab, mit welchem Charset das Form dargestellt wird, von dem der Request kommt.

Wie's bei Filenamen gemacht wird, weiß ich nicht, aber am besten verwendet man einfach keine Umlaute in Filenamen.

sliver33

Big d00d
Avatar
Registered: Sep 2001
Location: Alkoven
Posts: 273
Kann ich leider nicht ändern muss unbedingt ein ß bzw. Umlaute mitschicken.

Naja ... jetzt gehts eh, ich werd des einfach so lassn

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Das ß ist aber wohl eh nicht im Filenamen, oder? Alles hinter dem Fragezeichen ist kein Problem, da kann sich das Verarbeitungsskript eigentlich frei aussuchen, wie es die Sonderzeichen interpretiert. Üblich ist offenbar iso-8859-1.

sliver33

Big d00d
Avatar
Registered: Sep 2001
Location: Alkoven
Posts: 273
Stimmt aber laut Java API ist der Standard beim Verarbeiten UTF-8. Das Skript was ich ansteure ist aber eine ASP Seite und da kocht Microsoft wahrscheinlich wieder ihr eigenes Süppchen.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Jeder kocht sein eigenes Süppchen. Ich habe die HTTP Spezifikation jetzt zwar nur überflogen, aber gefunden hab ich zu dem Thema jedenfalls nichts. Man kann also machen, was man will.

sliver33

Big d00d
Avatar
Registered: Sep 2001
Location: Alkoven
Posts: 273
Laut w3.org soll man URIs mit UTF-8 kodieren

siehe w3.org

Nur was ich nicht versteh dort steht:

Zitat
Represent each character in UTF-8 (see [RFC2279]) as one or more bytes.

Escape these bytes with the URI escaping mechanism (i.e., by converting each byte to %HH, where HH is the hexadecimal notation of the byte value).

Soll man jetzt mit einem oder mit zwei bytes kodieren? (oder ist beides erlaubt?)

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Non-ASCII wird immer zu 2 oder mehr Bytes in UTF-8, und es gibt genau eine Möglichkeit, ein bestimmtes Unicode-Zeichen auf die Weise zu kodieren.

Was hier beschrieben ist, heißt aber nicht, dass du generell UTF-8 verwenden sollst, sondern es heißt nur, dass vom Autor der Seite geschriebene fehlerhafte (weil Nicht-ASCII-Zeichen enthaltende) HREFs vom Browser zu UTF-8 übersetzt werden sollen.

sliver33

Big d00d
Avatar
Registered: Sep 2001
Location: Alkoven
Posts: 273
Was wiederum bedeutet das jedes empfangs Skript eigentlich die URL als UTF-8 kodiert erwarten kann.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz