2012-02-24 2 views
2

У меня возникла проблема с получением символов на иврите из запроса http get.Прочитать неанглийские символы из http get request

Я получаю квадраты символов следующим образом: "[]" вместо символов на иврите.

Английские персонажи ОК.

Это моя функция:

public String executeHttpGet(String urlString) throws Exception { 
    BufferedReader in = null; 
    try { 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(); 
     request.setURI(new URI(urlString)); 
     HttpResponse response = client.execute(request); 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),"UTF-8")); 
     StringBuffer sb = new StringBuffer(""); 
     String line = ""; 
     String NL = System.getProperty("line.separator"); 
     while ((line = in.readLine()) != null) { 
      sb.append(line + NL); 
     } 
     in.close(); 
     String page = sb.toString(); 
     // System.out.println(page); 
     return page; 
    } finally { 
     if (in != null) { 
      try { 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

Вы можете проверить это на данном примере URL:

String str = executeHttpGet("http://kavim-t.co.il/include/getXMLStations.asp?parent=7_%20_1"); 

Спасибо!

+0

Как вы отображаете полученный текст? Вы уверены, что это не просто вывод на консоль, который не имеет этих символов в своем шрифте? –

+0

Я использую textView для отображения полученного текста. Но я вижу проблему еще раньше, когда я в режиме отладки. – David

+0

Это также было бы моим предположением. Попробуйте сохранить веб-сайт в файл, а затем отобразить его в своем браузере. Если это сработает, все в порядке. – devsnd

ответ

5

Этот файл, который вам не удалось найти, всего лишь UTF-8. Я протестировал его правильно, используя WINDOWS-1255 (ивритская кодировка), вы должны попробовать это вместо UTF-8.

+0

Ничего себе, вы правы! , виноват. 10x много. не могли бы вы рассказать мне, как вы обнаружили, что это «WINDOWS-1255»? – David

+1

@David - он находится в заголовке ответа: 'Content-Type: text/xml; Charset = windows-1255' – McDowell

+0

Используя этот код: 'Header [] header = response.getAllHeaders();' Я могу видеть больше деталей, но я не вижу 'Content-Type: text/xml; Charset = windows-1255' – David

-1

привет, как писал в этом другом вопросе Special characters in PHP/MySQL

вы можете установить символы на файл PHP на примере они устанавливают UTF-8, но вы можете установить другой тип, который поддерживает chararcters вам нужно.

+0

Я уже установил его в UTF-8, как вы можете видеть в моем коде, и это не помогло. Кроме того, я использую java, а не PHP. – David

0

Попробуйте другой сайт, похоже, что он не использует UTF-8. Альтернативно, UTF-16 может работать, но я не пробовал. Ваш код выглядит отлично.

0

Как указывали другие, контент фактически не кодируется как UTF-8. Вы можете посмотреть на httpEntity.getContentType(), чтобы извлечь фактическую кодировку содержимого, а затем передать это на ваш InputStreamReader. Это означает, что ваш код сможет корректно справиться с любой кодировкой.

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