Ich bin ziemlich neu, also sei nicht zu hart:)
Ich stehe vor einem Problem, indem ich einen Unicode String
von einem eingebetteten javax.swing.JApplet
in einer Webseite an den Java Script Teil übergebe. Ich bin mir nicht sicher, ob das ein Fehler oder ein Missverständnis der beteiligten Technologien ist:
Ich möchte eine Unicode-Zeichenfolge von einem Java-Applet an Java Script übergeben, aber die Zeichenfolge wird durcheinander gebracht. Seltsamerweise tritt das Problem nicht in Internet Explorer 10 auf, sondern in Chrome (v26) und Firefox (v20) . Ich habe jedoch andere Browser nicht getestet.
Der zurückgegebene String scheint in Ordnung zu sein, mit Ausnahme des letzten Unicode-Zeichens. Das Ergebnis im Java Script Debugger und auf der Webseite wäre:
Die Zeichenfolge scheint bei den letzten Bytes beschädigt zu sein. Wenn es mit einem ASCII-Zeichen endet, ist die Zeichenfolge in Ordnung. Zusätzlich tritt das Problem nicht in jeder Kombination auf und auch nicht jedes Mal (nicht sicher). Daher vermute ich einen Fehler und ich befürchte, ich könnte eine ungültige Frage stellen.
Ein minimalistisches Setup enthält ein Applet, das einige Unicode-Strings (UTF-8) zurückgibt:
%Vor%Die entsprechende Webseite mit Java Script könnte so aussehen:
%Vor%Ich arbeite an Windows 7 32-Bit mit der aktuellen Java Version 1.7.0_21 mit dem "Next Generation Java Plug-in 10.21.2 für Mozilla Browser". Ich hatte einige Probleme mit der Ländereinstellung meines Betriebssystems, aber ich habe mehrere (Englisch, Japanisch, Chinesisch) regionale Einstellungen versucht.
Im Falle einer beschädigten Zeichenfolge zeigt chrome ungültige Zeichen an (z. B. ). Firefox hingegen löscht den String komplett, wenn er mit enden würde.
Internet Explorer kann die Zeichenfolgen korrekt anzeigen.
Ich kann mir mehrere Problemumgehungen vorstellen, darunter das Entkommen / Unescaping und das Hinzufügen eines "letzten Char", das dann über Java Script entfernt wird. Eigentlich möchte ich gegen Androids Webkit schreiben und habe es dort nicht getestet.
Da ich weiterhin in Chrome testen möchte (wegen der Webkit-Technologie und des Komforts), hoffe ich, dass es eine triviale Lösung für das Problem gibt, die ich vielleicht übersehen habe.
Wenn Sie in Chrome / Firefox testen
Bitte ersetzen Sie die erste Zeile mit dieser und testen Sie sie dann,
%Vor%Der Doctype hat einen signifikanten Wert, während der Browser die Seite identifiziert.
Übergänge / verlieren Sie die Typen, die Sie mit Unicode verwenden können. Bitte testen und antworten ..
Ich schlage vor, einen Haltepunkt auf
zu setzen %Vor%und prüfen Sie den Text in der JavaScript-Konsole, z. mit
%Vor%oder
%Vor%oder
%Vor%Siehe auch
Ссылка (das nicht zu einem Standard gehört)
und
oder ähnliche Ressourcen.
Ihre Quelldateien haben möglicherweise nicht die von Ihnen angenommene Kodierung (UTF-8).
JavaScript setzt UTF-16-Zeichenfolgen voraus:
Java geht auch von UTF-16 aus:
Der Befehl Linux oder Cygwin file
kann Ihnen die Kodierung Ihrer Dateien anzeigen.
Siehe
Ссылка (habe keine kernel.org man-Referenz gefunden)
Sie müssen sicherstellen, dass Sie Ihrem Applet / embed-Tag das folgende Java-Argument hinzufügen:
-Dfile.encoding = utf-8
d. java_arguments="- Dfile.encoding = utf-8"
Andernfalls wird das Applet als ASCII-Text erwartet und behandelt.
Okay, ich bin etwas beschämt, weil ich dachte, ich habe es genug versucht: Ich habe tatsächlich nicht-lateinische Locale verwendet (zB Chinesisch (VR China) oder Japanisch (Japan) im Windows-System Gebietsschemaeinstellungen Wenn ich zu zurückwechsle Englisch (USA) oder Deutsch (Deutschland) alles funktionierte wie erwartet.
Ich frage mich immer noch, warum Chrome & amp; Mozilla auf solch seltsame Weise, weil Java und moderne Browser Unicode-basiert sein sollten; Also werde ich das nicht als Antwort akzeptieren! Das Problem tritt wieder auf, wenn ich auf Japanisch zurückwechsle, und ich werde es auf verschiedenen Systemen testen.
Ich möchte mich für alle Plakate für die Aufklärung bedanken ... und ich werde mich noch bemühen, diese Frage zu lösen.
Tags und Links javascript java utf-8 unicode applet