作者Tox (It's up to you)
看板java
标题[问题] httpclient取回来的网页编码问题
时间Sun Apr 4 15:22:39 2010
前辈们好
最近要抓一个网页的资料
我用了httpclient 这个工具提供的jar
需要去下列网页抓一些资料 我会下参数说要抓哪个国家哪个月的汇率
http://web.customs.gov.tw/currency/currency/currency.asp?qry=1&language=c
基本上是可以抓资料回来,但是中文是乱码
我尝试过用该网页header的编码来当作编码方式也没有效
用utf-8也没有效
不知道要怎样设定 才会得到正确的编码呢 还是我哪里写错了 谢谢
(虽然如果我只是要汇率数字 其他中文字是没差 但是我还是想了解到底我哪写错了)
以下是程式 可否请有经验的给予指导 谢谢
package httpdata.client;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
/**
* @author user
*
*/
public class CurrencyGetter {
public static void main(String[] args) throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new
HttpPost("
http://web.customs.gov.tw/currency/currency/currency.asp?qry=1&language=c");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("counter", "USD"));
nvps.add(new BasicNameValuePair("year", "99"));
nvps.add(new BasicNameValuePair("month", "3"));
nvps.add(new BasicNameValuePair("day", "0"));
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();
if (entity != null) {
entity.consumeContent();
}
if (entity != null) {
System.out.println(EntityUtils.toString(entity,HTTP.ISO_8859_1));
}
httpclient.getConnectionManager().shutdown();
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.164.83.43
1F:推 slalala:EntityUtils.toString(entity,"big5"); 04/04 21:15
2F:推 tcw026:那个网页是big5编码, 不是UTF-8 04/05 10:03
3F:推 slalala:原PO的写法上 我看不出哪边是用utf-8 04/05 11:23
4F:→ Tox:谢谢指导,原来参数直接写"big5"就正确了 04/05 18:39