1

Apache File Utilities を使用して .sql ファイルから以下の行を読み込んでいます。

INSERT INTO tablename (MESSAGE) VALUE(' [%1] を次の [%2] に転送:');

しかし、読んだ後、私は以下を取得します:

'次の [%2] への �[%1] の転送:'

問題: * £ * は � として読み込まれます</p>

以下のコードを使用して、ファイルを 1 行ずつ読み取ります。

LineIterator it = FileUtils.lineIterator(file, "UTF-8");
while (it.hasNext()) {
                lineCount++;
                line = it.nextLine();
                System.out.println(line);

印刷行は次のように表示されます: 次の [%2] への �[%1] の転送:'

Netbeans で変数 watch を見ると、その文字が\ufffdとして表示され ます

間違ったエンコーディングで読んでいますか?

SQLクエリを読み取るために使用できるエンコーディングはありますか?

4

1 に答える 1

1

ファイルに間違ったエンコーディングを選択したようです。コード例で ISO 8859-1 でエンコードされたファイルを読み取ろうとすることで、問題を再現できました。

テキスト ファイルのエンコーディングを決定し、それに応じて文字セットを調整する必要があります。例えば

LineIterator it = FileUtils.lineIterator(file, Charsets.ISO_8859_1.name());

残念ながら、エンコーディングの決定は、自動的に実行できるものではありません。エンコーディングが何であるかを明示的に伝える必要があります。

于 2013-04-29T12:41:09.573 に答える