无法读取特殊字符(Java)

时间:2011-01-19 22:18:49

标签: java encoding byte character

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

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

Connection.getInputStream().read();

并且还使用

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

但似乎存在问题,因为它将它们显示为方框。

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

通过new InputStreamReader(..,"utf-8")或您输入的内容在流上设置正确的编码。

答案 2 :(得分:0)

将字节数组转换为指定字符集的String。

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

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

答案 3 :(得分:-1)

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

  DataInputStream in = new DataInputStream(myinput);
  //where muinput is your BufferedInputStream.

  char c = in.readChar();

应该做你想做的事。