我正在用Java开发一个客户机-服务器网络应用程序。我在客户机和服务器之间使用以换行符结尾的字符串,服务器返回一个以null结尾的字符串。
在Netbeans IDE的输出窗口中,我在发送和接收的字符串中发现了一些乱码。
我不知道这些字符是什么,它们看起来像一个矩形框,当我在Notepad++中粘贴包含字符的行时,后面的字符和包括该字符的所有字符都消失了。
我如何知道IDE的输出屏幕中显示了哪些字符?
发布于 2010-01-12 12:22:55
如果您从服务器得到的响应应该是人类可读的文本,那么这可能是一个字符编码问题。例如,如果客户端和服务器都是用Java编写的,那么它们很可能使用/假定文本使用不同的字符编码。(也有可能响应不是人类可读的文本。在这种情况下,客户端不应该尝试将其解释为文本...因此,这个问题没有实际意义。)
当程序尝试呈现一些它不理解的字符代码时,通常会看到方框(拼板)。这可以是真实的字符(例如,日语字符、数学符号等),或者它可以是由用于编码和解码文本的字符集之间的不匹配所引起的伪像。
要尝试弄清楚发生了什么,请尝试修改您的客户端代码,以字节而不是字符的形式读取响应,然后将字节以十六进制的形式输出到控制台。然后在您的问题中发布这些字节,以及您当前看到的显示字符。
如果您了解字符集命名,并且知道字符集可能是什么,那么UNIX / Linux iconv实用程序可能会很有帮助。Emacs广泛支持以各种字符编码显示/编辑文件。(如果这只是行终止序列的问题,即使是普通的老式写字板也可以提供帮助;例如,"\n“与"\r\n”与“\n\r”。)
(我会避免尝试通过复制和粘贴来诊断此问题。复制和粘贴过程本身可能会“损坏”数据,从而导致进一步的混乱。)
发布于 2010-01-12 11:51:34
这可能只是二进制数据。当它被解释为ascii时,大部分看起来都是胡言乱语。确保您向套接字中写入的是确切的字节数,而不是像4096这样的好数字。最好是你可以发布你的代码,这样我们就可以帮助你找到错误。
https://stackoverflow.com/questions/2046558
复制相似问题