Griff französischen Zeichen in Java
Ich Habe eine Seite, wo ich Suche einen Begriff, und es ist die Anzeige perfekt. Was Charakter-Typ es ist.
Nun, wenn ich habe einige Checkboxen in JSP und ich check es aus und senden. In diese Kontrollkästchen habe ich einen box-Namen wie ABC Farmacéutica Corporation
.
Wenn ich auf submit-button, ich bin eine Funktion aufrufen und einstellen alle Parameter in ein Formular und schicken Sie das Formular ab. (Getestet habe ich putting-Warnung für die Sonderzeichen anzeigen, bevor Sie Einreichen, und es ist das gute).
Nun, kommen, um die Java-Ende, ich benutze Federn, Rahmen. Wenn ich drucken Sie die Laufzeit im controller, dann ist es angezeigt, wie ABC Farmacéutica Corporation
.
Bitte um Hilfe...
Vielen Dank im Voraus.
EDIT :
Bitte versuchen Sie dieses Beispiel
import java.net.*;
class sample{
public static void main(String[] args){
try{
String aaa = "ABC Farmacéutica Corporation";
String bbb = "ABC Farmacéutica Corporation";
aaa = URLEncoder.encode(aaa, "UTF-8");
bbb = URLDecoder.decode(bbb, "UTF-8");
System.out.println("aaa "+aaa);
System.out.println("bbb "+bbb);
}catch(Exception e){
System.out.println(e);
}
}
}
Erhalte ich als Ausgabe,
aaa PiSA+Farmac%C3%A9utica+Mexicana+Corporativo
bbb PiSA Farmacéutica Mexicana Corporativo
Versuchen, zu drucken, die string aaa
wie es ist.
Was application-server verwenden Sie? Wenn Tomcat, versuchen Sie URIEncoding="UTF-8" im Stecker.
Ich Benutze JBoss-Server
was Ausgang do Sie aus dem letzten Bearbeiten?
es ist UTF-8. Genauso wie jeder sagt. Ihre Java-Dateien gespeichert werden sollen, die als UTF-8-format, senden Sie die Seite an eine
content-type
mit UTF-8-Codierung, etc. Sie sehen, é, denn Sie erhalten eine UTF-8-string in eine nicht-utf-8-Umgebung, irgendwo.
InformationsquelleAutor Max | 2011-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein encoding-problem, und die
Ã
deutlich erkennen, dass diese UTF-8-text interpretiert als ISO-Latin-1 (oder eine seiner Cousinen).Sicherzustellen, dass Ihre JSP-Seite an der Spitze zeigen, dass es verwendet UTF-8-Codierung.
Dann schauen Sie bei diesem besonderen text-snippet, das von generation zu landet es in der Ausgabe-stream. Es könnte auch sein, da Sie geschrieben haben, eine property-Datei in UTF-8 und dann Lesen Sie es unter Windows.
Bitte überprüfen Sie meine aktuelle Frage
Wo kommt das "ABC Farmacéutica Corporation" - string kommen? Wo ist es physikalisch definiert?
Nein, in der physischen Datei, in der Sie definiert "ABC" usw. als eine string-Konstante, die Sie verändern, die physikalische Konstante "\u00E9" anstelle von "é".
InformationsquelleAutor Thorbjørn Ravn Andersen
Erhalten Sie
"ABC Farmacéutica Corporation"
weil die Zeichenfolge, die Sie erhalten, vom KundenISO-8859-1
ist, müssen Sie es zu konvertieren inUTF-8
bevor Sie die URL entschlüsseln. Wie diese :HINWEIS : einige Codierungen können nicht Umgerechnet werden und zu verschiedenen Zeichencodierungen, ohne zu riskieren Datenverlust. Zum Beispiel, Sie können nicht konvertieren Thai-Zeichen (
TIS-620
) zu einer anderen Codierung, auch nichtUTF-8
. Aus diesem Grund vermeiden der Konvertierung aus einer Kodierung, die anderen, es sei denn, letztlich notwendig ist (ie. die Daten stammen aus einer externen, Dritten perty, oder proprietäre Quellen, etc.) Dies ist nur eine Lösung, wie konvertieren von einer Quelle zur anderen, wissen der Quell-Codierung.?
statt). Besser stellen Sie sicher, dass der string kommt nicht in die falsche Codierung.ok.... wieso der downvote? Ich habe bereits in der Frage genannten s Kommentar darüber, dass alle Dateien kodiert in UTF-8. Jedoch zu sehen, dass niemand könnte eine angemessene Lösung für die OP, ich bin darauf hindeutet, dieser ist gültig Java zu konvertieren eine Zeichenfolge in eine andere Codierung. Die Zeichenfolge angezeigt, die in seinem controller ist eindeutig ein ISO-8859-1 kodierten string der Ausgabe in eine UTF-8-Umgebung. Ich argumentiere nicht die Verwendung einer Zeichencodierung (die ich nie verwenden ISO-8859-1), ich bin einfach darauf hindeutet, eine Lösung, die funktionieren könnte.
(Es ist die andere Weise herum, eine UTF-8-kodierter string dekodiert als ISO-8859-1.) Die Konvertierung sollte beginnen, auf einem niedrigeren Punkt, wo die Daten in das Programm gelangt (in
byte[]
form). Wenn Sie eine falsch dekodierte Zeichenfolge, es ist meistens zu spät, und die Kodierung und Dekodierung der Zeichenkette wieder hilft in vielen, aber nicht in allen Fällen, da diese Codierungen haben nicht die gleiche Reichweite der gültigen bytes. (Wenn Sie Bearbeiten Ihre post zu sagen, so etwas wie ein disclaimer, Entferne ich mein downvote - nun ich kann einfach nicht, bis Ihr post wieder editiert.)ja, das ist eine UTF-8-Zeichenfolge angezeigt, die als ISO-8859-1 kodierten string. In jedem Fall, Haftungsausschluss Hinzugefügt.
InformationsquelleAutor Yanick Rochon
Ich vermute, dass das problem mit der Zeichenkodierung auf der Seite. Stellen Sie sicher, dass die Seite, die Sie Einreichen, aus und die, die Sie anzeigen, verwenden Sie den Zeichensatz und stellen Sie sicher, dass Sie es ausdrücklich erwähnen.
zum Beispiel, wenn Ihr server läuft auf Linux die Standard-Codierung UTF-8, aber wenn Sie die Seite anzeigen, die auf Windows, die es annehmen, werden (wenn keine Codierung angegeben ist), und es werden ISO-8859-1.
Auch beim Empfang der übermittelten text auf Ihrem server-Seite, der server davon aus, dass der Standard-Zeichensatz beim erstellen der string-während Ihre Benutzer möglicherweise verwendet haben, somit eine Codierung, wenn Sie nicht angegeben haben, ein.
sind Sie auf der richtigen Einstellung der Kodierung im Umgang mit Ihren webservices?
Ich bin nicht der Codierung in java zu Ende. Weil ich habe versucht, mit URLEncoder.encode(Begriff, "UTF-8"). dann, Wenn ich drucken Sie es im logger angezeigt als ABC+Farmac%C3%A9utica+Corporation. Dies ist nicht identifiziert webservice
es geht nicht darum, die url-Codierung der Daten-wenn Sie einen webservice (SOAP-denke ich mal?) beim übergeben der Daten ist die Kodierung der Daten, die gesendet (geschrieben) und empfangen korrekt eingestellt?
Ich habe keine Idee, weil ich alle Felder in einem Objekt und übergeben Sie dieses Objekt, um eine web-service-link
InformationsquelleAutor Liv
Wie ich es verstehe, der text ist fest im controller-code wie folgt:
Ich erwarte, dass dies funktionieren würde:
Wenn dem so ist, ist das problem durch ein Missverhältnis zwischen der Zeichenkodierung von Java-editor verwenden und die Kodierung der compiler verwendet, um den Quellcode zu Lesen.
Zum Beispiel, wenn der editor speichert die Java-Datei als UTF-8 sind und Sie kompilieren auf einem system, wo UTF-8 ist nicht die Standard-Kodierung, dann würden Sie sagen müssen Ihren compiler verwenden, Kodierung:
Ihre build-Skripte und IDE-Einstellungen müssen konsequent sein bei der Handhabung von Zeichen-Daten.
Wenn Sie Ihren text-editor gespeichert Ihre Datei als UTF-8 dann in einem hex-editor, é, wäre die byte-Reihenfolge
C3 A9
; in vielen anderen Codierungen, wäre es das WertE9
. ISO-8859-1 und windows-1252 würde Kodieren é alsC3 A9
. Lesen Sie über die Zeichencodierung in Java-source-Dateien hier.ist ein (UTF-16) Unicode-escape-Sequenz. Ich habe eine app hier erscheint, in dem die Erlebnisse für alle Grapheme, die Sie eingeben.
InformationsquelleAutor McDowell
Ändern Sie die Codierung der jsp-Seite auf UTF-8 in der Datei - > Eigenschaften dann fügen Sie diese Zeile in den Kopf Ihrer jsp-Seite:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
InformationsquelleAutor Hafsa