2012-02-24 75 views
2

從http獲取請求獲取希伯來字符時出現問題。從http獲取非英文字符獲取請求

我得到像這樣的正方形字符:「[]」而不是希伯來字符。

英文字符正常。

這是我的函數:

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(); 
      } 
     } 
    } 
} 

您可以測試是由這個例子網址:

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

謝謝!

+0

你如何顯示接收到的文本?你確定它不僅僅是控制檯輸出的字體沒有這些字符嗎? – 2012-02-24 12:46:01

+0

我使用textView來顯示收到的文本。但是在我處於調試模式之前,我甚至可以看到問題。 – David 2012-02-24 12:50:13

+0

這也是我的假設。嘗試將網站保存到一個文件,然後用瀏覽器顯示它。如果這樣做,你很好。 – devsnd 2012-02-24 12:51:39

回答

5

您鏈接到的文件似乎不是UTF-8。我測試了它使用WINDOWS-1255(希伯來編碼)正確打開,你應該試試而不是UTF-8

+0

哇,你是對的! , 我的錯。 10倍很多。你能告訴我你是怎麼發現這是'WINDOWS-1255'的? – David 2012-02-24 13:00:40

+1

@David - 它在響應標題中:'Content-Type:text/xml; Charset = windows-1255' – McDowell 2012-02-24 13:05:36

+0

使用此代碼:'Header [] header = response.getAllHeaders();'我可以看到更多細節,但看不到Content-Type:text/xml;字符集= windows-1255' – David 2012-02-24 13:20:48

-1

喜如張貼在此的其他問題Special characters in PHP/MySQL

您可以設置在例如PHP文件,他們設置UTF-8字符,但您可以設置一個支持你所需要的chararcters不同的類型。

+0

我已經將它設置爲UTF-8,因爲您可以在我的代碼中看到它,但它沒有幫助。另外我使用的不是PHP。 – David 2012-02-24 12:53:42

0

嘗試不同的網站,它看起來像不使用UTF-8。或者,UTF-16 可能工作,但我還沒有嘗試過。你的代碼看起來很好。

0

正如其他人指出的,內容實際上沒有編碼爲UTF-8。您可能需要查看httpEntity.getContentType()以提取內容的實際編碼,然後將其傳遞給您的InputStreamReader。這意味着您的代碼將能夠正確處理任何編碼。