綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 用POST獲取網頁資料,中文部分產生亂碼。

[複製連結] 查看: 1987|回覆: 6|好評: 0
跳轉到指定樓層
樓主
vin87426 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2014-7-4 22:39

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 vin87426 於 2014-7-7 21:00 編輯

我正在寫一個App需要使用POST接收某個網頁的資料,
但該網頁使用的是"BIG5"編碼,所以回傳資料中文都是亂碼,請問有什麼好的解決方式?


已嘗試過:new String(字串.getBytes("big5"),"utf-8");
但沒有效用。

PS:我是新手希望可以有清楚一點的解說,謝謝。

程式碼:
  1. package com.VincentHu.user.myapplication;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.os.Handler;
  5. import android.os.Message;
  6. import android.view.Menu;
  7. import android.view.MenuItem;
  8. import android.view.View;
  9. import android.widget.TextView;
  10. import android.widget.Toast;

  11. import org.apache.http.HttpResponse;
  12. import org.apache.http.client.entity.UrlEncodedFormEntity;
  13. import org.apache.http.client.methods.HttpPost;
  14. import org.apache.http.impl.client.DefaultHttpClient;
  15. import org.apache.http.message.BasicNameValuePair;
  16. import org.apache.http.protocol.HTTP;
  17. import org.apache.http.util.EntityUtils;
  18. import org.jsoup.Jsoup;
  19. import org.jsoup.nodes.Document;
  20. import org.jsoup.select.Elements;

  21. import java.io.IOException;
  22. import java.util.ArrayList;
  23. import java.util.List;

  24. public class MyActivity extends Activity {
  25.     protected static final int REFRESH_DATA= 0x00000001;
  26. Handler XX = new Handler(){

  27.           public void handleMessage(Message MSTR){
  28.               switch(MSTR.what) {
  29.                   case REFRESH_DATA:
  30.                   String LLL =(String)MSTR.obj;
  31.                      String JJJ =  Toast.makeText(MyActivity.this,LLL,Toast.LENGTH_LONG).toString();
  32.                   TextView CCC = (TextView) findViewById(R.id.textView);
  33.                       Document doc = Jsoup.parse(LLL);
  34.                       Elements notice = doc.getElementsByTag("center");

  35.                   CCC.setText(notice.get(0).toString());
  36.               }
  37.         }
  38.     };

  39.     @Override

  40.     protected void onCreate(Bundle savedInstanceState) {
  41.         super.onCreate(savedInstanceState);
  42.         setContentView(R.layout.activity_my);



  43.     }
  44.     public void CVS(View View) {
  45.     Thread t1 = new Thread(KK);
  46.         t1.start();

  47.     }

  48. private Runnable KK = new Runnable() {
  49.     @Override
  50.     public void run() {
  51.         String Url = "http://163.26.206.142/WebPAC/Bin/WC_opac.ASP?WCI=WI_bookdq";
  52.         //�]�wPOST�Ѽ�
  53.         List postData = new ArrayList();
  54.         postData.add(new BasicNameValuePair("Keyword", "apple"));
  55.         HttpPost post = new HttpPost(Url);

  56.         try {


  57.             post.setEntity(new UrlEncodedFormEntity(postData, HTTP.UTF_8));

  58.             HttpResponse httpResponse = new DefaultHttpClient().execute(post);


  59.             if (httpResponse.getStatusLine().getStatusCode()==200){
  60.            
  61.                 String strResult = EntityUtils.toString(httpResponse.getEntity());






  62.                 XX.obtainMessage(REFRESH_DATA,strResult).sendToTarget();
  63.             }
  64.         } catch (IOException e) {
  65.             e.printStackTrace();
  66.         }
  67.     }
  68. };



  69.     @Override
  70.     public boolean onCreateOptionsMenu(Menu menu) {
  71.         // Inflate the menu; this adds items to the action bar if it is present.
  72.         getMenuInflater().inflate(R.menu.my, menu);
  73.         return true;
  74.     }

  75.     @Override
  76.     public boolean onOptionsItemSelected(MenuItem item) {
  77.         // Handle action bar item clicks here. The action bar will
  78.         // automatically handle clicks on the Home/Up button, so long
  79.         // as you specify a parent activity in AndroidManifest.xml.
  80.         int id = item.getItemId();
  81.         if (id == R.id.action_settings) {
  82.             return true;
  83.         }
  84.         return super.onOptionsItemSelected(item);
  85.     }
  86. }
複製代碼
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
CarolHsieh | 收聽TA | 只看該作者
發表於 2014-7-7 14:00
你好
這方面的程式能不能貼上來
不然我不知道你是從哪post到哪?
要取得哪的資料?
怎樣的資料?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| vin87426 | 收聽TA | 只看該作者
發表於 2014-7-7 23:01
CarolHsieh 發表於 2014-7-7 14:00
你好
這方面的程式能不能貼上來
不然我不知道你是從哪post到哪?

已補上程式碼。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
orangeai | 收聽TA | 只看該作者
發表於 2015-1-16 10:52
確認環境本身是否就是Big-5
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
play52 | 收聽TA | 只看該作者
發表於 2015-1-16 12:10
被POST端 能夠修改嗎?
嘗試把POST的資料做encode 的動作
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
 樓主| vin87426 | 收聽TA | 只看該作者
發表於 2015-1-16 18:41
orangeai 發表於 2015-1-16 10:52
確認環境本身是否就是Big-5

你指的環境是哪一邊??
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
 樓主| vin87426 | 收聽TA | 只看該作者
發表於 2015-1-16 18:43
play52 發表於 2015-1-16 12:10
被POST端 能夠修改嗎?
嘗試把POST的資料做encode 的動作

被POST端 無法做任何修改動作。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則