2015-03-03 1 views
0

Я разрабатываю сервер сокетов, который будет получать данные от китайского следящего оборудования 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

Необходимо указать параметр кодирования, в противном случае по умолчанию используется текущая кодировка операционной системы = не переносная.

InputStreamReader isr = 
    new InputStreamReader(socket.getInputStream(), encoding); 

Как кодирующая можно попробовать StandardCharsets.UTF_8 (Charset), UTF_16LE и китайский BIG кодировок (как строка).

Класс InputStreamReader является мостом из двоичных данных (InputStream, byte[]) к тексту (Reader, String, char) - который в Java всегда является Unicode, чтобы смешать все сценарии.