2016-03-29 15 views
1

Guten Tag,jsp passieren Vietnamesen Java-Klasse-Datei

Ich habe versucht, auf diese Google, aber nicht alle damit verbundenen Vorschlag/Lösung zu erhalten. Ich denke meine Frage ist vielleicht irreführend.

In meiner jsp Seite habe ich ein Eingabetext-Bereich Feld:

<s:textarea name="errorMessage.message" maxlength="500"/> 

Wenn ich auf Update-Button klicken, wird meine Java-Anwendung diesen errorMessage.message bekommen und in db speichern.

Dies funktioniert gut, wenn Benutzer in englischen Zeichen eingeben. Aber wenn ich Vietnamesisch eingebe, wird es zu einem anderen seltsamen Symbol in meiner Java-Datei wechseln.

Zum Beispiel, Benutzereingabe siêu nhân, wird es siêu nhân werden.

Aber wenn ich es in Java-Datei hart Code, dann funktioniert es gut und ich kann die Vietnamesisch korrekt in db speichern.

errorMessage.setMessage("siêu nhân"); 

System.out.println("now message is " + errorMessage.getMessage()); \\ this print correctly in my console 

ich versucht worden:

getRequest().setCharacterEncoding("UTF-8"); 

<%@page pageEncoding="UTF-8"%> 

aber immer noch das gleiche Problem, freundlich beraten.

+0

Welches jar verwenden Sie, um eine Verbindung zu db2 ** db2jcc4.jar ** oder ** db2jcc4.jar ** herzustellen? – Shaunak

+0

@Shaunak, verwende ich nur 'db2jcc4.jar', wenn die Federcharge ausgeführt wird. Auf der Ebene der Webanwendung glaube ich, dass ich eine Verbindung zu db2 herstelle, indem ich die Einstellung in der IBM WAS-Konsole in 'Resources',' JDBC'-Ebene konfiguriere. –

+0

Sieht aus, als ob eine UTF-8-Transformation angewendet wird. Der ISO-Zeichensatz kann nicht alle Zeichen mit mehreren Akzenten darstellen. Z.B. "Phở" wird als "Phá" angezeigt. Stellen Sie sicher, dass Ihre App die Zeichenfolge speichert und als UTF-8 anzeigt. – Stavr00

Antwort

1

Schließlich bekomme ich eine Lösung:

Lösung 1 (Gilt nur für 1 Eingang):

try { 
     byte[] bytes = test.getBytes("ISO-8859-1"); 
     test = new String(bytes, "UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Lösung 2 (Übernehmen für das ganze System):

ICH WAR verwende, so Wechseln Sie zur WAS-Konsole, Anwendungsserver> SITSMESCAPP01a> Prozessdefinition> Java Virtual Machine,

Fügen Sie in generische JVM-Argumente -Dclient.encoding.override=UTF-8 hinzu.

Server neu starten.