2013-03-21 5 views
6

Ich entwickelte jnlp Applet, das die Benutzereingabe ausgibt.Ungerade Anzahl von nicht-englischen Zeichen in Windows-Chrom gebrochen

Wenn ich eine ungerade Anzahl von nicht-englischen Zeichen (zB: Chinesisch) einstelle, druckt der Chrome-Browser das letzte Zeichen als Fragezeichen aus.

Eingang: 가 Ausgang: 가

ich auf Java-Konsole überprüft, dass die Zeichen korrekt ist.

Es muss ein Fehler in der Kommunikation von Applet zu Chrome Browser sein.

IE wird korrekt ausgedruckt.

Ich kann das Problem lösen, indem Sie Leerraum auf Applet anfügen und es auf Java Script entfernen.

Jeder hat einen Hinweis auf das Problem?

Codes sind wie folgt.

*MainApplet.Java* 
public class MainApplet extends JApplet implements JSInterface{//, Runnable { 

    public int stringOut(String sData) { 
     OutData = sData; 
     return 0; 
    } 

} 

*js File* 

function TSToolkitRealWrapper() 
{ 
    var OutData; 
    var OutDataNum; 
} 
var TSToolkit = new TSToolkitRealWrapper(); 


var attributes = { id:'TSToolkitReal',code:'com.multibrowser.test.MainApplet', width:100, height:100} ; 
var parameters = {jnlp_href: getContextPath() + '/download/pkitoolkit.jnlp', 
       separate_jvm:true, classloader_cache:false} ; 
TSToolkitRealWrapper.prototype.stringOut=function(str) 
{ 

      var nRet = TSToolkitReal.stringOut(str) ; 
      this.OutData= TSToolkitReal.OutData; 
      return nRet; 
} 

*HTML* 
<SCRIPT language=javascript> 
<!-- 
function StringOut(form) 
{ 
    var data = form.data.value; 
    var nRet = 0; 
    var base64Data; 
    nRet = TSToolkit.stringOut(data); 
    if (nRet > 0) 
    { 
     alert(nRet + " : " + TSToolkit.GetErrorMessage()); 
    } 
    else 
    { 
     form.data1.value = TSToolkit.OutData; 
    } 
} 

--> 
</SCRIPT> 


*jnlp* 
<?xml version="1.0" encoding="UTF-8"?> 
<jnlp href="cmp.jnlp"> 
    <information> 
     <title>MultiBrowser</title> 
    </information> 
    <security> 
     <all-permissions/> 
    </security> 
    <resources> 
     <j2se version="1.6+" /> 
      <jar href="MultiBrowser.jar"/> 

    </resources> 
    <applet-desc height="200" main-class="com.multibrowser.test.MainApplet" name="MainApplet" width="200"/> 
</jnlp> 
+0

Wie lautet der Zeichensatz der Seite, auf der das Applet angezeigt wird? Ist es ISO-2022-KR? – finnw

+0

Es ist UTF-8. tompal18

Antwort

2

Ich fragte in mehreren Web-Browser-Foren, aber es gibt noch keine Antworten.

Der Unterschied zwischen Windows und Linux ist file.encoding Wert. Windows (ms959) und Linux (UTF-8).

Ich kann nicht herausfinden, wie Sie den file.encoding Wert obwohl.

Unten hat nicht funktioniert. Wenn ich in der Java-Konsole 's' drücke, wird immer noch file.encoding = MS949 gedruckt.

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp href="pkitoolkit.jnlp"> 
    <security> 
     <all-permissions/> 
    </security> 
    <resources> 
      <j2se version="1.6+" java-vm-args="-Dfile.encoding=UTF-8" /> 
      <property name="file.encoding" value="UTF-8"/> 
2

IE ausdruckt richtig

Emm ...

Sie geben weniger Details ... trotzdem wenn Sie chinesische Zeichen in Ihrem Browser eingeben können, aber einige Müll bekommen auf Applet-Ausgang bedeutet, dass Ihre Internet-Broswer Chinesisch unterstützt, aber Ihr Applet nicht;

Ich nehme an, Sie näher an Ihre Client-Maschine JRE-Encoding-Einstellungen sehen sollen, weil es vielleicht nicht chinesische Codierung standardmäßig nicht unterstützt, so vielleicht das Applet einige manuelle Lokalisierung Kontrolle haben sollte ...

A. rate ich tiefer in Applet Locale user language Einstellungen graben ...

ich vermute, dass das file.encoding das Problem ist, wenn Sie unten auf meine eigenen Antworten suchen. Ich konnte nicht finden, wie man die Kodierung durch

B. Sie können statische Code verwenden Eigenschaft festlegen (es ganz am Anfang Ihres Applet-Code setzen)

static { 
System.setProperty("file.encoding", "UTF-8"); } 

C.

Wenn ich ungerade Anzahl von nicht gesetzt Englisch Zeichen (zB: Chinesisch), Chrom Browser druckt das letzte Zeichen als Fragezeichen aus.

und ...

Codierung ist ms949 und die jre Version 1.7.0_17

... die Vorstellung ist ziemlich komisch: S Wenn Sie Ihre Chrom haben mit koreanische Buchstaben Unterstützung und es ist ms949 als Client-Maschine Standard-Codierung, aber zur gleichen Zeit möchten Sie Ihr Applet Unterstützung utf-8 und koreanische Zeichen korrekt mit JS zurück auf Ihre MS494-kodierte Webseite zu machen Ich vermute, Sie stehen vor einer Art von inkompatiblen Codierungen% P

So zuerst, ich empfehle Ihre applet web page support utf-8 encoding anstelle des Standard-ms494 zu machen, weil ich das Applet und seine Webseite cp (n) annehmen könnte unvereinbar: S


Bericht, ob das half

+0

Ich vermute, dass die Datei.encoding das Problem ist, wenn Sie sich meine eigenen anschauen Antworten unten. Ich konnte jedoch nicht herausfinden, wie man die Kodierung einstellt. – tompal18

+0

Das Ändern der Ländereinstellung im Windows-Kontrollfeld funktionierte, während file.encoding = UTF-8 nicht funktionierte. – tompal18

+0

Wie lautet die Standardcodierung auf dem Clientcomputer? Und welche Client-JRE-Version ist installiert? – user592704

2

Ändern der Sprachumgebung in Windows-Systemsteuerung auf Englisch funktionierte, während file.encoding = UTF-8 nicht. Ich arbeite immer noch daran, warum das passiert.

2

Ich hatte das gleiche Problem vor etwa 2 Monaten bei J2ME, ich löse das Problem mit der String.trim() -Methode, wenn Ihr Text am Ende keinen Leerraum hat, könnten Sie das versuchen.