我很新,所以不要太苛刻:)
问(TL; DR)
我现在面临传递一个统一的问题String
从嵌入式javax.swing.JApplet
在网页中的Java脚本的一部分。 我不知道这是否是一个错误或涉及到的技术的一个误区:
问题
我想从一个Java小程序Java脚本传递的Unicode字符串,但字符串被搞砸。 奇怪的是,并没有在Internet Explorer 10,但在Chrome(V26)和Firefox(V20)不会出现此问题。 我没有测试但其他浏览器。
返回的字符串似乎不错,除了最后Unicode字符。 在Java脚本调试器和Web页面的搜索结果将是:
- 美国广播公司ABC→
- 查看→表
- 或→或
- 监视列表→观察名单
- 上传→低了
- Ë→
- Ë→E(不确定性)
- 上传ABC→上传ABC
该字符串似乎得到在最后字节损坏。 如果用ASCII字符结束的字符串是好的。 此外,该问题不每个组合中的每一次(不知道这个)发生,也没有。 因此,我怀疑一个错误,我怕我会张贴一个无效的问题。
测试设置
一个简约集起来包括返回某些Unicode(UTF-8)的字符串的applet:
/* TestApplet.java */
import javax.swing.*;
public class TestApplet extends JApplet {
private String[] testStrings = {
"abc", // OK (because ASCII only)
"表示", // Error on last Character
"表示", // Error on last Character
"ホーム ", // OK (because of *space* after ム)
"アップロード", ... };
public TestApplet() {...}; // Applet specific stuff
...
public int getLength() { return testStrings.length;};
String getTestString(int i) {
return testStrings[i]; // Build-in array functionality because of IE.
}
}
与Java脚本对应的网页看起来是这样的:
/* test.html */
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<span id="output"/>
<applet id='output' archive='test.jar' code=testApplet/>
</body>
<script type="text/javascript" charset="utf-8">
var applet = document.getElementById('output');
var node = document.getElementById("1");
for(var i = 0; i < applet.getLength(); i++) {
var text = applet.getTestString(i);
var paragraphNode = document.createElement("p");
paragraphNode.innerHTML = text;
node.appendChild(paragraphNode);
}
</script>
</html>
环境
我工作在Windows 7 32位与当前Java版本1.7.0_21使用“下一代Java插件10.21.2的Mozilla浏览器”。 我有一些问题,我的操作系统区域设置,但我试了(英语,日语,中国)区域设置。
在一个腐败字符串铬的情况下,示出了无效字符(例如)。 火狐,而另一方面,完全地丢弃字符串,它是否会与即将结束。
Internet Explorer的管理,才能正确显示字符串。
解决方案?
我可以想像几个解决方法,包括转义/转义并加入其中,然后通过Java脚本,删除了“最后的字符”。 其实,我打算写对Android的WebKit的,和我没有测试它。
因为我想继续在Chrome测试,我希望有一个简单的解决问题的办法,我可能都忽略了(因为Webkit的技术和舒适性)。