不支持的字符集异常:utf-lixo

UnsupportedCharsetException: utf-lixo

当我尝试在我的应用程序中运行 Activity 时,我在 Logcat 上收到此错误。

1134-1134/br.com.agenciaeisberg.qm E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: br.com.agenciaeisberg.qm, PID: 1134
    java.nio.charset.UnsupportedCharsetException: utf-lixo

我已经调试了代码并且一切正常,直到我调用网络服务

JSONObject json = jsonParser.makeHttpRequest(url_info_hospital,"GET",params);

PHP 页面正在运行,所需的所有信息都正常。

我检查了 PHP 和 APP 代码,但没有找到 UTF-lixo

在所有应用布局上都在使用

<?xml version="1.0" encoding="UTF-8"?>

并且 PHP 没有声明任何内容。

以下是活动的完整代码

package br.com.agenciaeisberg.qm;


import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class HospitalActivity extends Activity {

TextView Nome;
String pid;
Button btnIndicarLotacao;


// Progress Dialog
private ProgressDialog pDialog;

// JSON parser class
JSONParser jsonParser = new JSONParser();

// URL de busca de informações hospital
    private static final String url_info_hospital = "http://www.quickmed.com.br/android_hospital.php";

// JSON Nodes names

    private static final String TAG_HOSPITAL = "hospital";
    private static final String TAG_PID = "pid";
    private static final String TAG_NOME = "nome";
    private static final String TAG_SUCESSO = "sucesso";
    private static final String TAG_LOTACAO = "lotacao";

@Override
    public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.hospital);

    //Botão de Indicar Lotação
    btnIndicarLotacao = (Button)findViewById(R.id.btnIndicarLotacao);

    //Buscando detalhes do hospital através do Intent
    Intent i = getIntent();

    // Buscando o pid do intent
    pid = i.getStringExtra(TAG_PID);

    // Buscando info do hospital no background
    new InfoHospital().execute();

    // Botão Indicar Lotação
    btnIndicarLotacao .setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            //Launch atividade Lista de Hospitais
            Intent i=new Intent(getApplicationContext(),ListagemHospitaisActivity.class);
            startActivity(i);
        }
    });

}
    /**
     * Background Async Task para buscar todos as informações do hospital
     */

    class InfoHospital extends AsyncTask<String, String, String>{

        /**
         * Mostra Progress Dialog
         */

        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            pDialog = new ProgressDialog(HospitalActivity.this);
            pDialog.setMessage("Carregando informações dos hospitais. Favor aguadar ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
        /**
         * Buscando as informações num Background thread
         */

        protected String doInBackground(String... params){

            //atualizando UI pelo Background thread

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // Check for sucesso tag
                    int sucesso;
                    try {
                        //Construindo Parametros
                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("pid",pid));

                        //buscando as informações do produto atrav~es de Request HTTP
                        // Observer que o url de buscar produtos vai utilizar GET
                        JSONObject json = jsonParser.makeHttpRequest(
                                url_info_hospital,"GET",params);

                        // Verifica o log para a json response
                        Log.d("Info Hospital", json.toString());

                        // json tag sucesso
                        //sucesso = json.getInt(TAG_SUCESSO);

                        sucesso = 1;

                        if (sucesso == 1){
                            // Recebeu informações do Hospital
                            JSONArray hospitalObj = json
                                    .getJSONArray(TAG_HOSPITAL);

                            JSONObject hospital = hospitalObj.getJSONObject(0);

                            //produto encontrado
                            // TextView
                            Nome = (TextView) findViewById(R.id.displayNome);
                            Nome.setText(hospital.getString(TAG_NOME));


                        }else{
                            // hospital não encontrado
                        }

                    }catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            });

          return null;
        }
        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once got all details
            pDialog.dismiss();
        }

    }

}

这是一个愚蠢的错误。但我会把它留在这里,这样它可能会帮助其他人犯同样的愚蠢错误。在 JSONParser class 上,它定义了 URLEncodedUtils。错误在那里。

下面块的第 4 行不是 UTF-8,而是 utf-lixo

}else if(method == "GET"){
                // request method is GET
                DefaultHttpClient httpClient = new DefaultHttpClient();
                String paramString = URLEncodedUtils.format(params, "UTF-8");
                url += "?" + paramString;
                HttpGet httpGet = new HttpGet(url);

                HttpResponse httpResponse = httpClient.execute(httpGet);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            }