在Windows-chrome中,奇数个非英文字符被破坏了

时间:2013-03-21 02:32:30

标签: applet jnlp

我开发了jnlp applet,用于输出用户输入。

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

输入:가 输出:가

我在java控制台上检查过该字符是否正确。

将applet与chrome浏览器的通信一定是bug。

IE正确打印出来。

我可以通过在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>

4 个答案:

答案 0 :(得分:2)

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

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"/>

答案 1 :(得分:2)

  

IE打印正确

嗯...

你提供更少的细节...无论如何 如果你可以在你的浏览器中输入中文字符但是在applet输出上得到一些垃圾就意味着你的互联网broswer支持中文,但你的applet不 ;

我认为您应该密切关注您的客户端计算机JRE编码设置,因为默认情况下它可能不支持中文编码,所以也许您的applet应该有一些手动本地化控制......

A。我可以建议深入了解applet Locale user language设置......

  

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

B。您可以使用此类静态代码设置属性(将其放在applet代码的最开头

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

<强>下进行。

  

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

和...

  

编码是ms949,jre版本是1.7.0_17

...这个概念非常奇怪:S如果你的Chrome有韩文字母支持,它是ms949作为你的客户端机器默认编码,但同时你想让你的applet支持utf-8使用JS正确输出韩国字符回到你的ms494编码网页我怀疑你确实面对某种不兼容的编码%P

首先,我建议您使用applet web page support utf-8 encoding而不是默认的ms494,因为我认为applet及其网页cp(s)可能不兼容:S


报告是否有帮助

答案 2 :(得分:2)

将Windows控制面板中的语言环境更改为英语确实有效,而file.encoding = UTF-8则没有。我仍然在研究为什么会这样。

答案 3 :(得分:2)

我在2个月前在J2ME遇到了同样的问题,我解决了使用String.trim()方法的问题,如果你的文本最后没有空格,你可以试试。