Applet windows chrome中奇数个非英语字符被打断

Applet windows chrome中奇数个非英语字符被打断,applet,jnlp,Applet,Jnlp,我开发了jnlp小程序,它可以打印用户输入 当我输入奇数个非英语字符(例如:中文)时,chrome浏览器会打印出最后一个字符作为问号 输入:가 输出:가�� 我在java控制台上检查了字符是否正确 这一定是小程序与chrome浏览器通信中的错误 我打印得很正确 我可以通过在applet上添加空白并在java脚本上删除它来解决这个问题 有人对这个问题有任何线索吗 代码如下 *MainApplet.Java* public class MainApplet extends JApplet imple

我开发了jnlp小程序,它可以打印用户输入

当我输入奇数个非英语字符(例如:中文)时,chrome浏览器会打印出最后一个字符作为问号

输入:가 输出:가��

我在java控制台上检查了字符是否正确

这一定是小程序与chrome浏览器通信中的错误

我打印得很正确

我可以通过在applet上添加空白并在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>
*mainpapplet.Java*
公共类MainApplet扩展JApplet实现JSInterface{//,可运行{
公共整数字符串输出(字符串sData){
OutData=sData;
返回0;
}
}
*js文件*
函数TSToolkitRealWrapper()
{   
var数据;
var-OutDataNum;
}
var TSToolkit=new TSToolkitRealWrapper();
var attributes={id:'TSToolkitReal',代码:'com.multibrowser.test.mainpapplet',宽度:100,高度:100};
var参数={jnlp_href:getContextPath()+'/download/pkitoolkit.jnlp',
单独的jvm:true,classloader\u cache:false};
TSToolkitRealWrapper.prototype.stringOut=function(str)
{
var nRet=TSToolkitReal.stringOut(str);
this.OutData=TSToolkitReal.OutData;
返回nRet;
}
*HTML*
*jnlp*
多浏览器

我在几个网络浏览器论坛上问过,但还没有答案

Windows和Linux的区别在于file.encoding value.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"/>

我打印得正确

您提供的详细信息较少……无论如何如果您可以在浏览器中输入汉字,但小程序输出中出现一些垃圾,则意味着您的internet浏览器支持中文,但小程序不支持

我想你应该更仔细地观察你的客户端机器的JRE编码设置,因为默认情况下它可能不支持中文编码,所以你的小程序应该有一些手动本地化控制

A.我建议您深入了解小程序设置


如果你看一下我自己的,我怀疑file.encoding就是问题所在 答案如下。但我找不到如何设置编码

B.您可以使用这样的静态代码来设置属性(将其放在小程序代码的最开头)

C.

当我输入奇数个非英语字符(例如:中文)时,chrome 浏览器将最后一个字符打印为问号

而且


编码为ms949,jre版本为1.7.0_17

…这个概念很奇怪:如果你的chrome支持韩文字母,它是ms949作为你的客户机默认编码,但同时你想让你的小程序支持utf-8,并用JS正确输出韩文字符回到你的ms494编码网页,我怀疑你确实面临某种不兼容的enc编码%P

因此,首先,我建议使用您的而不是默认的ms494,因为我认为小程序及其网页cp可能不兼容:s



报告这是否有帮助

将windows控制面板中的区域设置更改为英语确实有效,而file.encoding=UTF-8无效。我仍在研究发生这种情况的原因。

大约两个月前,我在J2ME遇到了同样的问题,我使用String.trim()解决了这个问题方法,如果文本结尾没有空格,您可以试试。

小程序出现的页面的字符集是什么?是ISO-2022-KR吗?是UTF-8。如果您查看下面我自己的答案,我怀疑file.encoding是个问题。但我找不到如何设置编码。请在windows控制窗格中更改区域设置l在file.encoding=UTF-8不工作时工作。客户端计算机上的默认编码是什么?安装了什么客户端JRE版本?编码是ms949,JRE版本是1.7.017您是否尝试过如我前面所述设置编码(请参见第B点和第C点)?或者您只想使用jnlp元素?
static {
 System.setProperty("file.encoding", "UTF-8"); }