jsp-utf-Kodierung

Ich habe eine harte Zeit, herauszufinden, wie dieses problem zu behandeln:

Ich bin der Entwicklung einer web-tool für eine italienische Universität, und ich habe die Anzeige der Wörter mit Akzenten (wie è, ù, ...); manchmal bekomme ich diese Worte aus einer PostgreSql-Tabelle (UTF8-kodiert), aber meistens habe ich zu Lesen, lange Passagen aus einer Datei. Diese Dateien sind als utf-8 kodiert xml und Displays gut in Smultron oder ein utf-8 editor (Sie erstellt wurden-parsing in python alten Dateien mit Personen wie è anstelle von "è").

Schrieb ich eine java-Klasse, welche Ausschnitte der relevanten Bereiche aus der xml-Datei, die funktioniert wie folgt:

String s = parseText(filename, position)

wenn ich Schreibe, die zurückgegebene Zeichenfolge in einer Datei, sieht alles in Ordnung; das problem ist, dass wenn ich

out.write(s)

in der jsp-Seite, bekomme ich komische Zeichen. Übrigens, ich benutze

String s = getWordFromPostgresql(...)

out.write(s)

in der gleichen jsp und es zeigt "OK".

Irgendeinen Hinweis?

Dank
Nicola


@krosenvold

Vielen Dank für Ihre Antwort, jedoch, dass die Richtlinie ist bereits in die Seite, aber es funktioniert nicht (eigentlich "funktioniert" es, aber nur für die Saiten, die ich von der Datenbank). Ich denke es ist etwas über das Lesen von den Dateien, aber ich kann es nicht verstehen ... Sie arbeiten in der "java", aber nicht im "jsp" (kann nicht denken über eine bessere Erklärung ...)

hier ist ein einfaches Beispiel extrahiert aus dem tatsächlichen code: die Methode zum Lesen der Dateien im Gegenzug eine Karte, von der Mark (ein Objekt, eine position im text) in einen String (mit dem text):

dies ist in der .jsp-Seite (mit der utf-Richtlinie zitiert, die in den posts oben)

    //...
    Map<Mark, String> map = TestoMarkParser.parseMarks(...);
    out.write(map.get(m));

und das ist das Ergebnis:

"Fu proò cosà uso il Genere Enharmonico, che quelli quali vi si esercitavano,"

wenn ich den gleichen code in einer java-Klasse, und ersetzen aus.schreiben mit System.aus.println, das Ergebnis ist dieses:

"Fu così però in uso il Genere Enharmonico, che quelli quali vi si esercitavano,"


Habe ich eine Analyse mit einem hex-editor, hier ist es:

original-string: "fu così però "

ò in xml-Datei:
C3 B2

ò wie gerendert aus.write() in der jsp-Datei:
E2 88 9A E2 89 A4

ò wie geschrieben, in die Datei über:

FileWriter w = new FileWriter(new File("out.txt"));
w.write(s);     //s is the parsed string
w.close();

C3 B2

drucken der Werte der einzelnen Zeichen als int -

0: 70 = F
1: 117 = u
2: 32 =  
3: 112 = p
4: 101 = e
5: 114 = r
6: 8730 =  
7: 8804 =  
8: 32 =  
9: 99 = c
10: 111 = o
11: 115 = s
12: 8730 = 
13: 168 = 
14: 10 = `
Schreibe einen Kommentar