2011-01-19 74 views
3

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

即时阅读它们转化为字节数组,我试着用

Connection.getInputStream().read(); 

而且还使用

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

但似乎是一个问题,因为它显示他们为方框。

+0

如果您使用Windows并在命令行上运行,则不会显示unicode字符。 – Andreas 2011-01-19 22:39:51

回答

-1

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

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

    char c = in.readChar(); 

应该做你想做的。

+0

没有解决OP代码对默认编码敏感的基本问题,而不是正在读取的资源编码。 – 2011-01-19 22:49:57

4

你必须确保你的InputStreamReader使用相同的字符集的字节解码成字符比使用发件人字符编码成字节的一个。看看InputStreamReader的其他构造函数。

你也必须确保你使用的显示字符的字体支持的特殊字符。

4

通过new InputStreamReader(..,"utf-8")或任何你输入的是坐落在流正确的编码。

0

Conver字节数组到字符串指定字符集。

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

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