gpt4 book ai didi

java - 当我将字符串从 Javascript 传递到 Java applet 时,字符串会发生奇怪的变化

转载 作者:行者123 更新时间:2023-11-29 09:18:06 26 4
gpt4 key购买 nike

我正在使用 Javascript 和 Java applet(用于套接字)制作 Web IRC 客户端。我以前使用 Flash,但由于它有严格的安全限制,它可以连接到的服务器受到限制。所以我开始使用 Java applet,它之前没用过,所以用<applet>,编译小程序,签名jar等问题很多。),我有一个奇怪的现象。

当字符串从 Javascript 传递到 Java applet(如 irc.sendLine("foobar") )时,有时字符的代码是 65533(�)127 ,有时还有其他的东西,比如 110或 ASCII ( () 中的数字被填充。这可能是编码问题,但我认为不是,因为Java和HTML页面中使用的字符集都是UTF-8。 , 即使字符串仅包含字母数字也会发生这种情况。

更奇怪的是,它只发生在谷歌浏览器中。在 Firefox 中,没有填充(没关系。)

我修改了我的 Java applet 代码以调试问题。

下面是我的代码的一部分(traceStr 将字符串打印到 Javascript 控制台)

public void sendLine(String s){
traceStr(dumpStr(s));
}
private String dumpStr(String s){
String result = "";
for(int i=0;i<s.length();i++){
result += s.codePointAt(i);
if(i<s.length()-1) result += " ";
}
return result;
}

sendLine使用 JS 控制台调用,如 irc.sendLine("foobar") .

这是一些输出(重复添加 0)

48 40 65533
48 48 65533 65533 65533 127
48 48 48 65533 65533 127
48 48 48 48 65533 127
48 48 48 48 48 127
48 48 48 48 48 48
48 48 48 48 48 48 48
48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 99 111 110 110 101 99 116
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65533 65533 65533
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65533 65533 65533 127
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65533 65533 127
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65533 127
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 127

The quick brown fox 的输出:

84 104 101 32 113 117 105 99 107 32 98 114 111 119 110 32 102 111 120 65533 65533 127

的输出, 天1 , 天11 , 天111 , 和 天地 :

22825 65533 65533 127
22825 49 65533 127
22825 49 49 127
22825 49 49 49
22825 22320

我在 Ubuntu 11.10 上使用 Google Chrome 17.0.932.0 和 Java 1.6.0_23。当我使用 Flash 时没有发生这种情况。谁能确定我做错了什么?从输出中我猜想与 UTF-8 相关的问题, 但我不知道了......

顺便说一句,我在 SO 上找到的许多类似问题的答案都提到了 ISO-8859-1 , 但它与这个问题有关吗?

最佳答案

JavaScript 是 UTF-16。因此,从 UTF-16 到 UTF-8 的转换可能会产生意想不到的副作用。 Escpecialy 超过 127 位的字符。

关于java - 当我将字符串从 Javascript 传递到 Java applet 时,字符串会发生奇怪的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8210795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com