2013-03-21 11 views
6

Ho sviluppato l'applet jnlp che stampa l'input dell'utente.Il numero dispari di caratteri non inglesi si interrompe in windows-chrome

Quando inserisco un numero dispari di caratteri non inglesi (ad esempio: cinese), il browser Chrome stampa l'ultimo carattere come punto interrogativo.

ingresso: 가 uscita: 가

ho controllato su console java che il personaggio è corretta.

Deve essere un bug nella comunicazione dell'applet al browser Chrome.

IE viene stampato correttamente.

Posso risolvere il problema aggiungendo lo spazio bianco sull'applet e rimuoverlo sullo script java.

Chiunque ha qualche indizio sul problema?

I codici sono i seguenti.

*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

Qual è il set di caratteri della pagina in cui viene visualizzata l'applet? È ISO-2022-KR? – finnw

+0

È UTF-8. tompal18

risposta

2

Ho chiesto in diversi forum di browser Web, ma non ci sono ancora risposte.

La differenza tra Windows e Linux è il valore file.encoding. Windows (ms959) e Linux (UTF-8).

Non riesco a capire come impostare il valore file.encoding però.

Di seguito non ha funzionato. Quando premo 's' nella console java, stampa ancora file.encoding = MS949.

<?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 stampa correttamente

Emm ...

Tu dai meno dettagli ... comunque se è possibile inserire caratteri cinesi nel browser, ma avere un po 'spazzatura per l'output di applet significa che il tuo broswer Internet supporta cinese ma l'applet non è;

Presumo che dovrebbe guardare più vicino ai vostri client impostazioni di codifica macchina JRE perché forse non supporta la codifica cinese di default così forse l'applet dovrebbe avere un certo controllo manuale localizzazione ...

A. posso consigliare scavare più in profondità applet Locale user language impostazioni ...

ho il sospetto che il file.encoding è il problema, se si guarda a mie risposte qui sotto. Non sono riuscito a trovare come impostare la codifica anche se

B. È possibile utilizzare codice statico come questo per impostare la proprietà (metterlo proprio all'inizio del codice applet)

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

C.

Quando ho messo numero dispari di non- caratteri inglesi (es: cinese), chrome browser stampa l'ultimo carattere come punto interrogativo.

e ...

codifica è ms949 e la versione di JRE 1.7.0_17 è

... la concezione è piuttosto strano: S Se avete il vostro cromato con supporto per le lettere coreane ed è ms949 come codifica predefinita della macchina client, ma allo stesso tempo vuoi rendere l'applet supportato utf-8 e restituire correttamente i caratteri coreani con JS alla tua pagina Web codificata ms494, sospetto che tu faccia qualcosa di gentile di codifiche incompatibili% P

Quindi, prima, mi faccio consigliare per rendere il vostro applet web page support utf-8 encoding al posto del ms494 default, perché suppongo che l'applet e la sua pagina web cp (s) potrebbe essere incompatibile: S


relazione se questo aiutato

+0

Sospetto che il file.encoding sia il problema, se guardi il mio risposte qui sotto. Non sono riuscito a trovare come impostare la codifica. – tompal18

+0

La modifica delle impostazioni internazionali nel pannello di controllo di Windows ha funzionato mentre file.encoding = UTF-8 non ha funzionato. – tompal18

+0

Qual è la codifica predefinita corrente sul computer client? E quale versione client di JRE è installata? La codifica – user592704

2

Cambiare le impostazioni locali nel pannello di controllo di Windows in inglese ha funzionato mentre file.encoding = UTF-8 no. Sto ancora lavorando sul perché questo accada.

2

Ho avuto lo stesso problema circa 2 mesi fa in J2ME, ho risolto il problema con l'utilizzo del metodo String.trim(), se il testo non ha uno spazio bianco alla fine è possibile provare.