0

Androidのパーサーiso-8859-1で多くの問題を引き起こすエンコードされた RSS フィードがあります。バイトを正しく読み取ることができず、途中で終了するため、不正な形式のデータとして表示されることがあります。フィードをUTF-8に変換するPHPスクリプトをWebサーバーにセットアップできました:

<?php
header('Content-type: text/xml');
$url = urldecode($_GET['url']);
$str = file_get_contents($url);
$utf8 = utf8_encode($str);
echo $utf8;
?>

それはうまくいきます。ただし、請求書を支払うかどうかに関係なく実行されるように、アプリを独立したエンティティにしたかったのです。また、このプロセスでも顕著なスピードヒットが発生します。

Androidでlatin-1入力ストリームをutf-8でエンコードする方法はありますか?

4

1 に答える 1

0

PHP と Java はこの点で完全に異なります。PHP 文字列はバイト配列であり、Java 文字列は実際の文字列であり、Java にはバイト配列用の別のメカニズムがあります。PHP ソリューションは、RSS が ISO-8859-1 の場合にのみ機能します。おそらく、Windows-1252 を使用して改善できますが、実際の UTF-8 RSS フィードでは機能しません。

したがって、本当に変更する必要があるのは、Android で文字列への応答をデコードする方法です。そのためのコードを示していません。RSS フィードの Content-Type ヘッダーを読み取るか、エンコーディング属性を読み取るのに十分なだけ読み取るか、デフォルトで Windows-1252 としてデコードします。ブラウザと同じように。

于 2013-01-09T11:11:49.247 に答える