【问题标题】:Read non-english characters from http get request从 http get 请求中读取非英文字符
【发布时间】:2012-02-24 12:43:51
【问题描述】:

我在从 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");

谢谢!

【问题讨论】:

  • 如何显示收到的文本?您确定不只是控制台输出的字体中没有这些字符吗?
  • 我正在使用 textView 来显示收到的文本。但我甚至可以在我处于调试模式之前看到问题。
  • 这也是我的假设。尝试将网站保存到文件中,然后使用浏览器显示。如果成功了,那就没问题了。

标签: java android httprequest hebrew


【解决方案1】:

您链接到的文件似乎不是UTF-8。我测试它使用WINDOWS-1255(希伯来语编码)正确打开,你应该尝试而不是UTF-8

【讨论】:

  • 哇,你是对的! , 我的错。 10 倍很多。你能告诉我你是怎么发现这是'WINDOWS-1255'的吗?
  • @David - 在响应头中:Content-Type:text/xml; Charset=windows-1255
  • 使用这个代码:Header[] header = response.getAllHeaders();我可以看到更多细节但我看不到Content-Type:text/xml; Charset=windows-1255
  • 它是http响应头的一部分。您可以使用浏览器的网络开发工具阅读它(假设您使用的是 firefox 或 chrome)。
  • @David 我保存了文件并使用 Linux 上的 gedit 文本编辑器打开它。它允许我尝试不同的编码。您还可以使用 Chrome 开发者工具查看编码(在您页面上的 Chrome 中按 F12 并转到网络选项卡,然后刷新页面,您会看到更多详细信息)。
【解决方案2】:

尝试不同的网站,它似乎不使用 UTF-8。或者,UTF-16 可能可以工作,但我没有尝试过。您的代码看起来不错。

【讨论】:

    【解决方案3】:

    正如其他人所指出的,内容实际上并未编码为 UTF-8。您可能想查看httpEntity.getContentType() 以提取内容的实际编码,然后将其传递给您的InputStreamReader。这意味着您的代码将能够正确处理任何编码。

    【讨论】:

      【解决方案4】:

      嗨,正如在另一个问题Special characters in PHP / MySQL中发布的那样

      您可以在他们设置utf-8的示例中设置php文件上的字符,但您可以设置支持您需要的字符的不同类型。

      【讨论】:

      • 我已经将它设置为 UTF-8,正如您在我的代码中看到的那样,它没有帮助。另外我使用的是 java 而不是 PHP。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多