我正在开发一个套接字服务器,它将从中国跟踪设备TK-06A接收数据。我的服务器也收到了以下信息:
�L�l}�8���
您认为自己可以做什么?我用什么来解决这个问题? 我的代码下面是我用来测试的。
public static void main(String[] args) {
try {
InputStream input = null;
int charsRead = 0;
//Criando um servidor que atendera na porta 8080
int port = 5016;
char[] inputChars = new char[1024];
ServerSocket server = new ServerSocket(port);
while (true) {
try {
System.out.println("Aguardando conexao!!!");
Socket socket = server.accept();
InputStreamReader isr = new InputStreamReader(socket.getInputStream());
BufferedReader inputStream = new BufferedReader(isr);
int data = 0;
System.out.println("Reading from stream:");
if ((charsRead = inputStream.read(inputChars)) != -1) {
System.out.println("Chars read from stream: " + charsRead);
System.out.println(inputChars);
System.out.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
您应提供encoding参数,否则默认为当前操作系统encoding = non-portable。
InputStreamReader isr =
new InputStreamReader(socket.getInputStream(), encoding);
编码可以尝试StandardCharsets.UTF_8
(Charset),UTF_16LE
和中文BIG编码(如String)。
类InputStreamReader
是从二进制数据(InputStream, byte[]
)到文本(Reader, String, char
)的桥梁 - 在java中始终是Unicode,用于混合所有脚本。