Android 台灣中文網

標題: 用POST獲取網頁資料,中文部分產生亂碼。 [打印本頁]

作者: vin87426    時間: 2014-7-4 22:39
標題: 用POST獲取網頁資料,中文部分產生亂碼。
本帖最後由 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. }
複製代碼

作者: CarolHsieh    時間: 2014-7-7 14:00
你好
這方面的程式能不能貼上來
不然我不知道你是從哪post到哪?
要取得哪的資料?
怎樣的資料?

作者: vin87426    時間: 2014-7-7 23:01
CarolHsieh 發表於 2014-7-7 14:00
你好
這方面的程式能不能貼上來
不然我不知道你是從哪post到哪?

已補上程式碼。
作者: orangeai    時間: 2015-1-16 10:52
確認環境本身是否就是Big-5
作者: play52    時間: 2015-1-16 12:10
被POST端 能夠修改嗎?
嘗試把POST的資料做encode 的動作
作者: vin87426    時間: 2015-1-16 18:41
orangeai 發表於 2015-1-16 10:52
確認環境本身是否就是Big-5

你指的環境是哪一邊??
作者: vin87426    時間: 2015-1-16 18:43
play52 發表於 2015-1-16 12:10
被POST端 能夠修改嗎?
嘗試把POST的資料做encode 的動作

被POST端 無法做任何修改動作。




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1