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

3

我正在制作一个使用特殊加密的聊天客户端。它在读取像«、ƒ、̕这样的字母时存在问题,无法从输入缓冲区中读取。

我将它们读入一个字节数组中,并尝试使用以下方法:

Connection.getInputStream().read();

并且也使用

BufferedReader myInput = new BufferedReader(
    new InputStreamReader(Connection.getInputStream()));

但是出现了一个问题,它把它们显示为方框。

如果您正在使用Windows并在命令行上运行,则Unicode字符将无法显示。 - Andreas
4个回答

4

您必须确保InputStreamReader使用与发送方用于将字符编码为字节的字符集相同的字符集解码字节为字符。请查看InputStreamReader的其他构造函数。

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


4

通过new InputStreamReader(..,"utf-8")或其他输入方式,在流上设置正确的编码。


0
将字节数组转换为字符串,指定字符集。
String data = new String(byte[], "UTF-8");

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


-1
你可以尝试使用 DataInputStream 和 readChar() 方法。
  DataInputStream in = new DataInputStream(myinput);
  //where muinput is your BufferedInputStream.

  char c = in.readChar();

应该做你想要的事情。


并没有解决问题,即 OP 的代码对默认编码敏感,而不是读取资源的编码。 - Mike Samuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接