1

次のプログラムは、通常の英語の文字列からウルドゥー語の文字列を分離します。このプログラムを書きました

    try {
     File f = new File("C:/Users/user/Desktop/tes.txt");
     FileReader reader = new FileReader(f);
     BufferedReader br = new BufferedReader(reader);
     String text = "";
     String s;
     while( ( s = br.readLine() ) != null) {
       text += s;
     }

     String splits[] = text.split("سٹیمپ ختم ہو جاتی ہے");

     for(int i=0;i<splits.length;i++) {
        System.out.println(splits[i]);
     }  
} catch(Exception exc) {
   exc.printStackTrace();
  }

notepad ++でコンパイルし、実行して次の出力を取得します。

∩╗┐╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ

suhail

╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ

gupta

╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ

cse

╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ

ghazal

╪│┘╣█î┘à┘╛ ╪«╪¬┘à █?┘ê ╪¼╪º╪¬█î █?█Æ

ファイルtes.txtが次のようになったとき:

ここに画像の説明を入力

しかし、netbeans IDE から同じプログラムを実行すると、期待どおりの出力が得られます。

suhail
gupta
cse
ghazal

notepad ++で書き込み、コマンドを使用してコンパイルした後に同じプログラムを実行すると、どのような違いがありますか:

javac -encoding UTF-8 checker.java
java checker

netbeans IDEで同じプログラムをコピーして実行ボタンを押しますか?最初のケースでは、文字列は正規表現から分割されませんurdu string

4

1 に答える 1

0

FileReaderおよびFileWriterクラスは、システムのデフォルトの文字エンコーディングを暗黙的に使用します。

で読んでみるInputStreamReader

InputStreamReader in = new InputStreamReader(new FileInputStream(f), "UTF-8");
BufferedReader br = new BufferedReader(in);
    while(br.ready())
    {
        text = text+br.readLine();
    }

編集:

1) プロンプトのエンコーディングを変更します:chcp 65001

2) のコンストラクタで Charset を指定するInputStreamReader

 import java.io.*;

public class UnicodeTestFile{

public static void main(String args[]) throws Exception{

try {
     File f = new File("C:/Users/user/Desktop/tes.txt");
     InputStreamReader ir = new InputStreamReader(new FileInputStream(f),"UTF-8");
     BufferedReader br = new BufferedReader(ir);
     String text = "";
     String s;
     while( ( s = br.readLine() ) != null) {
       text += s;
     }

     String splits[] = text.split("سٹیمپ ختم ہو جاتی ہے");

     for(int i=0;i<splits.length;i++) {
        System.out.println(splits[i]);
     }  
} catch(Exception exc) {
   exc.printStackTrace();
  }}
}

3) エンコーディングを指定してコンパイルする

javac -encoding UTF-8 Checker.java
于 2012-10-13T05:25:00.353 に答える