1

AndroidおよびiOSデバイスで実行されるアプリケーションを開発しています。このアプリでは、URLからXMLストリームを取得する必要があります。このXMLは実際には安全ではありません。たとえば、次のような行があるためです。

啓示

となります :

回転

もちろん、最善の方法はXMLジェネレータースクリプトを修正することです。しかし、私は会社の開発者として働いているだけで、それにアクセスすることはできません。そのため、今のところ、私は自分が持っているものでできることをやろうとしています。

これがこのトピックの理由です。このデータをObjective-CのNSDataオブジェクトに入れると:

NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];

そして、すべてのバイトを読み取ってみてください:

NSUInteger len = [data length];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [data bytes], len);
for(int i = 0 ; i < len ; i++)
{
    NSLog(@"%d",byteData[i]);
}

charのint値、特殊文字かどうかを正しく表示します。それから私はそれ(unichar)byteData[i]を解決するために処理する必要があります。

いいえ、JavaとAndroidでは、基本的なBufferedReader操作を実行しようとしています。

URL myURL = new URL(url);
BufferedReader in = new BufferedReader(new InputStreamReader(myURL.openStream()));

次に、すべての文字のintを1つずつ出力します。

int i;
while((i = in.read()) != -1) System.out.print(i);

しかし、Javaでは、これを行うことで、適切なIDの代わりに置換charのID(65533)をすぐに取得し、それを置き換えることができなくなります。

何か案が?私を読んでくれてありがとう。

4

1 に答える 1

6
BufferedReader in = new BufferedReader(
        new InputStreamReader(myURL.openStream(), "UTF-8"));
  • InputStreamsは、バイト、バイナリデータ用です。

  • リーダーは、文字、文字列、テキスト用です。

InputStreamReaderは、この概念の違いを橋渡しし、バイナリデータがどのエンコーディングに含まれるかを示し、エンコーディング用のオプションのパラメータを備えています。デフォルトのエンコーディングは現在のプラットフォームのエンコーディングであるため、移植性はあまり高くありません。

于 2013-03-04T11:32:04.527 に答える