Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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
Java 如何破译网络程序中的乱码/胡言乱语字符_Java_Networking_Debugging - Fatal编程技术网

Java 如何破译网络程序中的乱码/胡言乱语字符

Java 如何破译网络程序中的乱码/胡言乱语字符,java,networking,debugging,Java,Networking,Debugging,我正在用JavaSE开发一个客户机-服务器网络应用程序。我正在使用从客户端到服务器的换行符终止的Sting,服务器用以null结尾的字符串进行响应。 在Netbeans IDE的输出窗口中,我在发送和接收的字符串中发现了一些乱七八糟的字符 我不知道这些字符是什么,它们看起来像一个矩形框,当我在记事本++中粘贴包含该字符的行时,后面的所有字符,包括该字符都会消失 我怎么知道IDE的输出序列中出现了哪些字符?这可能只是二进制数据。当它被解释为语言时,它的大部分看起来像胡言乱语。确保您正在向套接字写入

我正在用JavaSE开发一个客户机-服务器网络应用程序。我正在使用从客户端到服务器的换行符终止的Sting,服务器用以null结尾的字符串进行响应。
在Netbeans IDE的输出窗口中,我在发送和接收的字符串中发现了一些乱七八糟的字符

我不知道这些字符是什么,它们看起来像一个矩形框,当我在记事本++中粘贴包含该字符的行时,后面的所有字符,包括该字符都会消失


我怎么知道IDE的输出序列中出现了哪些字符?

这可能只是二进制数据。当它被解释为语言时,它的大部分看起来像胡言乱语。确保您正在向套接字写入准确的字节数,而不是像4096这样的好数字。最好是您可以发布代码,以便我们可以帮助您找到错误。

如果您从服务器返回的响应应该是人类可读的文本,那么这可能是一个字符编码问题。例如,如果客户机和服务器都是用Java编写的,那么它们很可能对文本使用/假设不同的字符编码。(也有可能响应不应该是人类可读的文本。在这种情况下,客户不应该试图将其解释为文本……所以这个问题没有意义。)

当程序试图呈现它不理解的字符代码时,通常会看到方框(splat)。这可能是真实字符(例如,日语字符、数学符号等),也可能是由用于编码和解码文本的字符集之间的不匹配引起的伪影

若要尝试了解发生了什么,请尝试修改客户端代码,将响应读取为字节而不是字符,然后将字节以十六进制输出到控制台。然后将问题中的字节与当前显示的字符一起发布

如果您了解字符集命名并了解字符集可能是什么,UNIX/Linux
iconv
实用程序可能会有所帮助。Emacs广泛支持以各种字符编码显示/编辑文件。(如果这只是线路终止顺序的问题,即使是普通的旧写字板也会有帮助;例如“\n”与“\r\n”与“\n\r”。)


(我不会试图通过复制和粘贴来诊断这一问题。复制和粘贴过程本身可能会“损坏”数据,导致您进一步混淆。)

可能是因为两端的字符编码不同,例如,UTF-8与ASCII?我不确定每个字符串只能得到一个乱码字符,所以这似乎是一些终止符问题。我只是看不到它是什么,因为它看起来像一个盒子。你输入的数据类型是什么?尝试以原始字节[]格式获取数据,并将以十六进制打印的数据逐字节转储到控制台。@theatrus:我很快就会这样做,我想Stephen C在同一行上建议了一些东西,让我在今天晚些时候准备一些东西之前回去工作。谢谢。我能告诉你这是什么角色吗?我可以复制并粘贴到某个工具中,该工具会告诉我字符的十六进制或ascii码是什么?我会尝试一下,然后可能我会在路上,谢谢你的建议。