我正在制作一个使用特殊加密的聊天客户端。它在读取像«、ƒ、̕这样的字母时存在问题,无法从输入缓冲区中读取。
我将它们读入一个字节数组中,并尝试使用以下方法:
Connection.getInputStream().read();
并且也使用
BufferedReader myInput = new BufferedReader(
new InputStreamReader(Connection.getInputStream()));
但是出现了一个问题,它把它们显示为方框。
我正在制作一个使用特殊加密的聊天客户端。它在读取像«、ƒ、̕这样的字母时存在问题,无法从输入缓冲区中读取。
我将它们读入一个字节数组中,并尝试使用以下方法:
Connection.getInputStream().read();
BufferedReader myInput = new BufferedReader(
new InputStreamReader(Connection.getInputStream()));
您必须确保InputStreamReader使用与发送方用于将字符编码为字节的字符集相同的字符集解码字节为字符。请查看InputStreamReader的其他构造函数。
您还必须确保用于显示字符的字体支持特殊字符。
通过new InputStreamReader(..,"utf-8")
或其他输入方式,在流上设置正确的编码。
String data = new String(byte[], "UTF-8");
请确保显示字体支持UTF-8或您指定的编码字符集。
DataInputStream in = new DataInputStream(myinput);
//where muinput is your BufferedInputStream.
char c = in.readChar();
应该做你想要的事情。