1

SQLite データベースにプリロードする必要があるデータを含むテキスト ファイルがあります。res/raw に保存しました。

を使用してファイル全体を読み取り、クラスreadTxtFromRaw()を使用しStringTokenizerてファイルを 1 行ずつ処理します。

ただし、Stringによって返されるreadTxtFromRawには、ファイル内にある外国の文字は表示されません。テキストの一部がスペイン語またはフランス語であるため、これらが必要です。何か不足していますか?

コード:

String fileCont = new String(readTxtFromRaw(R.raw.wordstext));
StringTokenizer myToken = new StringTokenizer(fileCont , "\t\n\r\f");

readTxtFromRaw メソッドは次のとおりです。

private String readTxtFromRaw(Integer rawResource) throws IOException
{
    InputStream inputStream = mCtx.getResources().openRawResource(rawResource);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    int i = inputStream.read();
    while (i != -1)
    {
        byteArrayOutputStream.write(i);
        i = inputStream.read();
    }
    inputStream.close();

    return byteArrayOutputStream.toString();
}

このファイルは Eclipse を使用して作成されており、Eclipse ではすべての文字が正常に表示されます。

これは Eclipse 自体と関係がありますか? ブレークポイントを設定し、ウォッチ ウィンドウで myToken をチェックアウトしました。変な文字を正しい文字 (たとえば、í、é) に手動で置き換えようとしましたが、できませんでした。

4

1 に答える 1

1

いくつかのエンコーディングを確認しましたか?

  • ソースファイルのエンコーディングは何ですか?
  • 出力ストリームのエンコーディングは何ですか?

プラットフォームのbyteArrayOutputStream.toString()デフォルトの文字エンコーディングに従って変換されます。したがって、外国語の文字を削除するか、出力に表示されないように変換すると思います。

すでに使用しようとしましたbyteArrayOutputStream.toString(String enc)か? エンコードには「UTF-8」または「iso-8859-1」または「UTF-16」を試してください。

于 2011-06-04T20:22:33.880 に答える