我开发了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>
我在几个网络浏览器论坛上问过,但还没有答案.
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"/>