6

ユーザー入力を出力するjnlpアプレットを開発しました。

英語以外の文字(例:中国語)を奇数個入れると、Chromeブラウザは最後の文字を疑問符として出力します。

入力:가出力:가��

文字が正しいことをJavaコンソールで確認しました。

アプレットからChromeブラウザへの通信にバグがあるはずです。

IEは正しく印刷されます。

アプレットに空白を追加し、Javaスクリプトで削除することで、問題を解決できます。

誰かがこの問題について何か手がかりを持っていますか?

コードは次のとおりです。

*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>
4

4 に答える 4

2

Windows コントロール パネルでロケールを英語に変更すると機能しましたが、file.encoding=UTF-8 は機能しませんでした。なぜこれが起こるのか、私はまだ取り組んでいます。

于 2013-04-22T07:53:08.267 に答える
2

IEは正しく印刷されます

ええと...

詳細はあまり提供しません...とにかく、ブラウザに漢字を入力できるが、アプレットの出力にゴミが表示される場合は、インターネットブラウザが中国語をサポートしているが、アプレットがサポートしていないことを意味します

クライアント マシンの JRE エンコーディング設定に注意する必要があると思います。デフォルトでは中国語のエンコーディングがサポートされていない可能性があるため、アプレットには手動でローカライズを制御する必要があるかもしれません...

A.アプレットのロケール ユーザーの言語設定を詳しく調べることをお勧めします...

以下の私自身の回答を見ると、file.encodingが問題であると思われます。エンコーディングの設定方法がわかりませんでした

B.このような静的コードを使用してプロパティを設定できます (アプレット コードの最初に配置します) 。

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

C.

奇数の英語以外の文字 (例: 中国語) を入力すると、Chrome ブラウザは最後の文字を疑問符として出力します。

と...

エンコーディングは ms949 で、jre バージョンは 1.7.0_17 です。

...概念はかなり奇妙です:S クロムに韓国語の文字がサポートされていて、クライアントマシンのデフォルトエンコーディングがms949であると同時に、アプレットでutf-8をサポートし、韓国語の文字を正しく出力したい場合JSを ms494 でエンコードされた Web ページに戻してください

最初に、アプレットとその Web ページ cp(s) に互換性がない可能性があるため、デフォルトの ms494 ではなくutf-8 エンコーディングをサポートするアプレット Web ページを作成することをお勧めします:S


それが役に立ったかどうかを報告する

于 2013-04-21T04:06:42.493 に答える
2

いくつかの Web ブラウザー フォーラムで質問しましたが、まだ回答がありません。

Windows と Linux の違いは file.encoding の値です。Windows (ms959) および Linux (UTF-8)。

ただし、 file.encoding 値を設定する方法がわかりません。

以下はうまくいきませんでした。Java コンソールで「s」を押すと、まだ 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"/>
于 2013-04-19T00:43:52.767 に答える