2017-01-22 6 views
0

Я читаю поток из HttpURLConnection в String, который передается SAXParser.Недопустимый символ во входном потоке

Содержание выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 

_

BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8)); 
StringBuilder sb = new StringBuilder(); 
while ((output = br.readLine()) != null) { 
      sb.append(output); 
} 

Когда я пытаюсь напечатать его утешить, я вижу

?<?xml version="1.0" encoding="utf-8"?> 

(недопустимый символ в начале) SAXParser не справляется с этим.

Если я отлаживаю и наведите указатель мыши над строкой var с помощью мыши, я вижу это правильно.

+0

Уверены ли вы, что в UTF-8? – shmosel

ответ

0

Я думаю, ? является byte-order mark. Метод mark/resetBufferedReader может использоваться для проверки и пропуска первого символа, если это спецификация.

BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8)); 
br.mark(256); 
char firstChar = br.read(); 
System.err.println(Integer.toString(firstChar));//for debug 
if (firstChar != 0xFEFF) {//char of BOM 
    br.reset(); 
} 
StringBuilder sb = new StringBuilder(); 
while ((output = br.readLine()) != null) { 
      sb.append(output); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^