5

Java を使用して utf-8 で保存されたテキスト ファイルから Unicode 文字を読み込もうとしています。テキスト ファイルは次のとおりです。

अ、अदेब#、अन、अनसुलअनसुल、अनसुल、अनफ、अनफ#、अनजअनजです。 गन、थन、ह、ह、हम、जम、गल、गथ、द、द、द、द、थनै、थथ、थथ、सथसथ、खफ、गल、गथ、मिख、जथ、ज、ज、थ、थ、दद、न、न、नेथ、ब、ब、बुंथ、 बिथ, बिख, बेल, मम, आ, आइ, आउ, आगदा, आगसिर</p>

私は次のようにコードを試しました

import java.io.*;
import java.util.*;
import java.lang.*;
public class UcharRead
{
    public static void main(String args[])
    {
        try
        {
            String str;
            BufferedReader bufReader = new BufferedReader( new InputStreamReader(new FileInputStream("research_words.txt"), "UTF-8"));
            while((str=bufReader.readLine())!=null)
            {
                System.out.println(str);
            }
        }
        catch(Exception e)
        {
        }
    }
}

????????????????????????として出て行く 誰でも私を助けることができます

4

3 に答える 3

9

(ほとんどの場合) テキストを正しく読んでいますが、書き出すときは UTF-8 を有効にする必要もあります。そうしないと、デフォルトのエンコーディングで印刷できないすべての文字が疑問符に変わります。

System.out の代わりに File に書き込んでみてください (そして適切なエンコーディングを指定してください):

Writer w = new OutputStreamWriter(
   new FileOutputStream("x.txt"), "UTF-8");
于 2013-09-11T05:54:43.487 に答える
6

UTF-8 エンコーディングを使用してテキストを適切に読み取っている場合は、コンソールも UTF-8 をサポートしていることを確認してください。Eclipse を使用している場合は、次の方法でコンソールの UTF-8 エンコーディングを有効にすることができます。

Run Configuration->Common -> Encoding -> Select UTF 8

これが日食のスクリーンショットです。

ここに画像の説明を入力

于 2013-09-11T05:57:34.087 に答える
5

あなたはそれを正しく読んでいます- 問題はほぼ確実にあなたのコンソールがテキストを処理できないということです. これを確認する最も簡単な方法はchar、文字列内のそれぞれを出力することです。例えば:

public static void dumpString(String text) {
    for (int i = 0; i < text.length(); i++) {
        char c = text.charAt(i);
        System.out.printf("%c - %04x\n", c, (int) c);
    }
}

次に、 Unicode コード表を使用して、各文字が正しいことを確認できます。

ファイルを正しく読み取っていることを確認したら、出力側で作業できますが、一度に一方の側に集中するようにすることが重要です。入力エンコーディングと出力エンコーディングの両方で同時に潜在的な障害を診断しようとするのは非常に困難です。

于 2013-09-11T05:54:27.100 に答える