黑莓http连接读取网页的内容。一些标点符号被错误地读取

时间:2011-08-09 08:47:20

标签: http blackberry get

我有一段代码可以打开HTTP连接来读取网页上包含的数据。

        HttpConnection h = new HttpConnection();
        InputStream input = h.openInputStream();
        int len = (int) h.httpConn.getLength();

        StringBuffer raw = new StringBuffer();

        if(len > 0)
        {
            byte[] data = new byte[len];
            while( -1 != (len = input.read(data))) 
            {
                raw.append(new String(data, 0, len));
            }
        }

        response = raw.toString();
        input.close();
        h.httpConn.close();
        //System.out.println("Response -----> " + response);

        return response;

此代码工作正常,但在某些标点符号上标记为无法正常阅读。例如&gt;&gt; '&lt;&lt;撇号出现为&gt;&gt; â€<。

我猜它可能与编码有关,但我尝试过UTF-8,UTF-16和ASCII,但这并没有解决问题。

2 个答案:

答案 0 :(得分:3)

当我得到奇怪的字符代替标点符号时,我已经为我做了这项工作:

public String getContents(InputStream stream) {
    String contents = null;
    try{
        contents = new String(IOUtilities.streamToBytes(stream), "UTF-8");
    }
    catch(Exception e) {
        //encoding error
    }
    return contents;
}

答案 1 :(得分:1)

而不是:

raw.append(new String(data, 0, len));

你可以使用

raw.append(new String(data, 0, len, "UTF-8"));

传入一个字符enconding的名字,在本例中为UTF-8。