我有一段代码可以打开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,但这并没有解决问题。
答案 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。