有没有办法更改String(byte [])构造函数使用的编码?
在我自己的代码中,我使用String(byte [],String)来指定编码,但我使用的是无法更改的外部库.
String src = "with accents: é à";
byte[] bytes = src.getBytes("UTF-8");
System.out.println("UTF-8 decoded: "+new String(bytes,"UTF-8"));
System.out.println("Default decoded: "+new String(bytes));
Run Code Online (Sandbox Code Playgroud)
这个输出是:
UTF-8 decoded: with accents: é à Default decoded: with accents: é Ã
我试过更改系统属性,file.encoding但它不起作用.
我开发了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 …Run Code Online (Sandbox Code Playgroud)