| 

.NET C# Java Javascript Exception

2
Ich nutze in meiner Anwendung mehrere Webdienste. Ich habe bemerkt das in ihren Antworten statt den Buchstaben ä, ü,... irgendwelche merkwürdige Zeichen bekomme. Ich nehme an das dies am Charakter Encoding liegt.

Das gleiche passiert wenn mein J2ME Client etwas zur Serverkomponente schickt.

Wie kann ich solche Probleme lösen? Kann ich die Antworten irgendwie in UTF8 umwandeln, obwohl ich nicht weiß welches encoding sie benutzen? Kann ich das Encoding irgendwie selbst ermitteln?


EDIT: Momentan löse ich das Problem folgendermaßen

public static String germanisieren(String str){
String[] quelle = {"Ãœ","ü","ö","ä","Ä","ß","é","è","ó","ñ",
"’","ã","´","ê´","ç´","Ç´","„","â€"};
String[] ziel = {"Ü","ü","ö","ä","Ä","ß","é","è","ó","ñ","\'","ã","
\'","ê","ç","Ç","„","”"};
for(int x=0;x<quelle.length;x++){
str = str.replace(quelle[x], ziel[x]);
}
return str;
}
News:
28.10.2009
ermin 1,3k 2 7
ermin 1,3k 2 7
Welche (genau) merkwürdigen Zeichen bekommst du denn zurück? Kannst du einen hier abbilden?
Martin Bassus 28.10.2009
6 Antworten
2
Grundsätzlich gilt, das Encoding kann man nur in Ausnahmefällen automatisch erkennen, daher ist es immer besser das encoding zu kennen, und gezielt zu konvertieren.
Da Du von Webdiensten sprichst, könnte Dir folgendes helfen:

Das encoding kann im HTTP Header stehen, oder die HTML Datei selbst enthält das Encoding. Bei XHTML z.b. im XML header:
<?xml version="1.0" encoding="UTF-8"?>

Bei normalen HTML Dateien kann man das so aussehen:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

In Java sind alle Strings Unicode, daher musst Du beim auslesen einfach nur das Charset mit angeben:
InputStreamReader reader = new InputStreamReader(url.openStream(),"ISO-8859-1");

Beim Schreiben solltest Du das Encoding wie oben beschrieben mitteilen, und bei den Schreiboperationen natürlich wieder umwandeln:
OutputStreamWriter writer = new OutputStreamWriter(out,"ISO-8859-1");
28.10.2009
keinhaar 210 1 6
1
Du könntest auch versuchen beim 'Einsammeln' der Daten schon UTF-8 anzufordern, indem Du beim Request einen Accept-Charset Header mitsendest.
Deine Auswertung was denn da wirklich zurück kommt sollte sich dann auch auf die Reqponse Header erstrecken: Content-Type.
Was da drin steht ist das was kommt, wenn es nicht da ist haste nix, wenn es sich mit den anderen Angaben (Content-Intern z.B. meta, xml-header) beisst, dann macht der Content Anbieter was falsch.
28.10.2009
DaSpors 4,2k 2 8
1
So wie Dein Code aussieht, bekommst Du vom Webservice UTF-8 und behandelst es aber beim Empfang wie iso-8859-1 oder ähnliches

Dein InputReader sollte von vorne rein dann UTF-8 erwarten und nicht ISO-xxxx.
01.11.2009
stefan.bachert 395 4
0
So you can get here the website that you always need to get the gta online money generator for free.
15.01.2017
0
This is an interesting site, serious!Really these contents needs to be shared on social networking sites as they are really the brief and great masterpieces here
happy wheels
geometry dash
happy wheels demo
five nights at freddy's
03.02.2017
Kümmert sich eigentlich überhaupt noch irgend jemand um diese Seite? Früher waren die Spams binnen Minuten gelöscht, heute überdauern sie teilweise Wochen.
muffi 03.02.2017
0
Thanks for your post! it contains quite a lot of things to learn! it's great that I known this site!
happy wheels | abcya | fb login
09.02.2017

Stelle deine Java-Frage jetzt!