读取特殊字符时出现问题(Java)

读取特殊字符时出现问题(Java),java,encoding,byte,character,Java,Encoding,Byte,Character,我正在制作一个使用特殊加密的聊天客户端。从输入缓冲区读取«,ƒ,̕等字母时出现问题 我把它们读入一个字节数组,并尝试使用 Connection.getInputStream().read(); 而且还使用 BufferedReader myInput = new BufferedReader( new InputStreamReader(Connection.getInputStream())); 但是,当它将它们显示为方形框时,似乎出现了问题。您可以尝试使用和readChar()方

我正在制作一个使用特殊加密的聊天客户端。从输入缓冲区读取«,ƒ,̕等字母时出现问题

我把它们读入一个字节数组,并尝试使用

Connection.getInputStream().read();
而且还使用

BufferedReader myInput = new BufferedReader(
    new InputStreamReader(Connection.getInputStream()));
但是,当它将它们显示为方形框时,似乎出现了问题。

您可以尝试使用和readChar()方法


应该做您想做的。

您必须确保InputStreamReader使用相同的字符集将字节解码为字符,而不是发送方使用的字符集将字符编码为字节。看看InputStreamReader的其他构造函数


您还必须确保用于显示字符的字体支持您的特殊字符。

通过新的InputStreamReader(…,“utf-8”)或任何您的输入设置流上的正确编码。

将字节数组转换为字符串指定字符集

String data = new String(byte[], "UTF-8");

确保显示字体支持UTF-8或您指定的编码字符集。

如果您使用Windows并在命令行上运行,则不会显示unicode字符。这并没有解决以下根本问题:OP代码对默认编码敏感,而不是对正在读取的资源编码敏感。
String data = new String(byte[], "UTF-8");