Проблема кодирования Android httpclient (запрос)

Привет, я пытаюсь построить небольшой клиент отдыха в Android. Я просто пытаюсь получить файл XML, который может быть проанализирован позже. Однако у меня есть некоторые проблемы с кодированием.

Специальные символы, такие как ø и å, не распознаются. XML-файл использует кодировку ISO-8859-1, но я не могу понять, как заставить httpclient использовать эту кодировку. Кто-нибудь, кто может помочь?

Вот код:

    public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    String URL = "http://konkurrence.rejseplanen.dk/bin/rest.exe"; 

    String result = ""; 

    Button btn; 
    TextView tv; 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
        tv = (TextView)findViewById(R.id.tvResponse); 
        btn = (Button)findViewById(R.id.btnMakeRequest); 

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                String query = "/departureBoard?id=8600626&date=19.03.11&time=07:02&useBus=0"; 
                callWebService(query); 
            }
        }); 
    }

    public void callWebService(String q){  
        HttpClient httpclient = new DefaultHttpClient();  
        HttpGet request = new HttpGet(URL + q);   
        ResponseHandler<String> handler = new BasicResponseHandler();  
        try {  
            result = httpclient.execute(request, handler); 
            tv.setText(result); 
        } catch (ClientProtocolException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        httpclient.getConnectionManager().shutdown();  
        Log.i("test", result);  
    } 
}

заранее спасибо. С наилучшими пожеланиями, Кеннет

1 ответ

Я бы взглянул на заголовки ответа. Ответ должен будет установить:

Content-Type: text/xml; charset:ISO-8859-1;

В противном случае, я понимаю, что http-клиент по умолчанию будет кодировать в utf-8. Вам также может потребоваться изменить заголовок по вашему запросу, если ваш веб-сервис использует его, чтобы попытаться определить, что вы хотите. Нужно знать, что если вы делаете это в браузере, вы получаете ISO-документ или UTF-8?

HTTPGet расширяет этот класс методами заголовка

Исходная информация о кодировке XML

Другие вопросы по тегам