なぜJava BufferedReader()のない読書アラビア語、中国語の文字を確認してください。◆

StackOverflow https://stackoverflow.com/questions/2260325

  •  20-09-2019
  •  | 
  •  

質問

ようにしているファイルを読み込むのを含む英語-アラビア語の文字が各行には、別のファイルを含む英語-中国語の文字にします。しかし、文字、アラビア語、中国語が正しく表示-いずれをとっています。うどんできることがあります。

こちらのコードの読み込みに使用す:

try {
        String sCurrentLine;
        BufferedReader br = new BufferedReader(new FileReader(directionOfTargetFile));
        int counter = 0;

        while ((sCurrentLine = br.readLine()) != null) {
            String lineFixedHolder = converter.fixParsedParagraph(sCurrentLine);
            System.out.println("The line number "+ counter
                               + " contain : " + sCurrentLine);
            counter++;
        }
    }

版01

読みの行をアラビア語、中国語の単語を使ってい機能を翻訳しているだけで検索 たアラビア語のテキスト 内ArrayList(を含むすべての期待の言葉を使indexOf();法です。そして、単語のインデックスが見つかりで、英語では同じインデックスが別のArraylist.しかしこの検索は常にfalseを返しますが失敗した場合に検索した場合のマークの代わりにアラビア語、中国語の文字です。その後、私のシステム。ます。println印刷を示してくnullとなり、失敗。

*I'mを使用6.8Mac版IDE


版02

こちらのコードを検索のための英語翻訳:

        int testColor = dbColorArb.indexOf(wordToTranslate);
        int testBrand = -1;
        if ( testColor != -1 ) {
            String result = (String)dbColorEng.get(testColor);
            return result;
        } else {
            testBrand = dbBrandArb.indexOf(wordToTranslate);
        }
        //System.out.println ("The testBrand is : " + testBrand);
        if ( testBrand != -1 ) {
            String result = (String)dbBrandEng.get(testBrand);
            return result;
        } else {
            //System.out.println ("The first null");
            return null;
        }

私は実際に探2Arraylistsあの、ご希望の言葉。失敗した場合は得られないといった両ArrayListsの場合は、nullが返されます。


版03

私はデバッグしたラインの読み出しを格納し私の文字列変数として以下の

 "3;0000000000;0000001001;1996-06-22;;2010-01-27;����;;01989;������;"

版03

ファイルのいくつかについて触れたいと思いしてもらった後で修正されている別のプログラム(私は知らないの横でVB)のプログラムのアラビア文字は出しても正しく表示されます。私は次のファイルのエンコーディングにメモ帳++いることでANSI.しかし時としてUTF8(置換のアラビア語文字の英)に変換しまANSI、アラビア語な問題を迎!

役に立ちましたか?

解決

FileReader javadoc:

利便性クラスで読んで字のファイルです。このクラスのコンストラクタは、このようなデフォルト文字エンコーディングおよびデフォルトのbyteバッファサイズは相当であると認めます。これらの値を自分で指定するには、構築するInputStreamReaderは、FileInputStream.

い:

Reader reader = new InputStreamReader(new FileInputStream(fileName), "utf-8");
BufferedReader br = new BufferedReader(reader);

これも動作しない、その後もコンソールが設定されていないための適切な表示をUTF-8文字以内です。設定により、IDE用いられることになる。

更新: 上記のコード交換 utf-8cp1256.この作品を細かく(WinXP,にはjdk6)

していただくことをお勧めし主張をされているファイルを用いて生成するUTF-8です。ので cp1256 な作品の中国とい同様の問題が発生している。

他のヒント

で最も読書の情報が正しく,しかしながら、お客様の出力ストリームにはどのように変動するというUTF-8など任意の文字にすることになり出力文字セット入れ替えるとともに、'?'.

ことで確認できる各キャラクターや印刷の文字序数.

public void writeTiFile(String fileName,String str){
    try {
        FileOutputStream out = new FileOutputStream(fileName);
        out.write(str.getBytes("windows-1256"));
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top