Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我将字符串从Javascript传递到Java小程序时,字符串会发生奇怪的变化_Java_Javascript_String_Encoding_Applet - Fatal编程技术网

当我将字符串从Javascript传递到Java小程序时,字符串会发生奇怪的变化

当我将字符串从Javascript传递到Java小程序时,字符串会发生奇怪的变化,java,javascript,string,encoding,applet,Java,Javascript,String,Encoding,Applet,我正在使用Javascript和Java applet制作一个web IRC客户端(用于socket。我以前使用过Flash,但由于它有严格的安全限制,它可以连接的服务器受到限制。因此我开始使用Java applet,这是我以前没有用过的,因此我在这方面遇到了很多问题,例如使用,编译applet,以及对jar进行签名),我有一个奇怪的现象 当一个字符串从Javascript传递到Java小程序(如irc.sendLine(“foobar”))时,有时会出现代码为65533的字符(�)或127,有

我正在使用Javascript和Java applet制作一个web IRC客户端(用于socket。我以前使用过Flash,但由于它有严格的安全限制,它可以连接的服务器受到限制。因此我开始使用Java applet,这是我以前没有用过的,因此我在这方面遇到了很多问题,例如使用
,编译applet,以及对jar进行签名),我有一个奇怪的现象

当一个字符串从Javascript传递到Java小程序(如
irc.sendLine(“foobar”)
)时,有时会出现代码为
65533的字符(�)
127
,有时像
110
或ASCII中的数字(
)之类的东西会被填充。这可能是编码问题,但我认为不是,因为Java和HTML页面中使用的字符集都是
UTF-8
,即使字符串只包含字母数字,也会发生这种情况

更奇怪的是,这种情况只发生在谷歌Chrome上,而在Firefox中,没有填充(这是可以的)

为了调试这个问题,我修改了Java小程序代码

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

快速棕色狐狸的输出:

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.023。这在我使用Flash时没有发生。有人能识别出我做错了什么吗?从输出中,我猜与
UTF-8
相关的东西有问题,但我不知道了


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

JavaScript是UTF-16。所以从UTF-16到UTF-8的转换可能会产生意想不到的副作用。特别是对于127位小数以上的字符。

JavaScript是UTF-16。所以从UTF-16到UTF-8的转换是共同的可能会发生意外的副作用。特别是127位以上的字符。

我考虑过这一点,但这并不能解释为什么Firefox中的输出是正常的(似乎FF也使用UTF-16)。这并没有说明如何解决问题……:(IE和Safari呢。可能是Chrome是例外!我在Windows上测试了它(谷歌Chrome金丝雀和Firefox),两者都可以正常工作。(我没有测试IE,但它可能可以正常工作)…所以,这就是谷歌Chrome的问题,我想…:/如果它在IE中工作,那么问题有多大。IE和FF覆盖了大部分浏览器市场。我考虑过这一点,但这并不能解释为什么Firefox中的输出是正常的(FF似乎也使用UTF-16)。但这并没有说明如何解决这个问题……:(IE和Safari呢。可能是Chrome是个例外!我在Windows(谷歌Chrome canary和Firefox)上测试了它,两者都可以正常工作。(我没有测试IE,但可能可以)…所以,这就是谷歌Chrome的问题,我想…:/如果它在IE中工作,那么问题有多大。IE和FF覆盖了大部分浏览器市场。
84 104 101 32 113 117 105 99 107 32 98 114 111 119 110 32 102 111 120 65533 65533 127
22825 65533 65533 127
22825 49 65533 127
22825 49 49 127
22825 49 49 49
22825 22320