2012-02-09 12 views
2

Javaを使用してアラビア語のテキストを読み取ろうとしていますが、スキャナは要素を認識しないため、LineNumberReaderはテキストファイルの行を認識します。Javaのアラビア語のテキストファイルを読み取ることができません

英語のテキストで同じコードを試してみましたがうまくいきます。私はここでのNetBeans 7.0.1

を使用しています

は私のコードです:

public class ReadFile { 
    private int number_of_words; 
    private File f1; 
    private String array[][],lines[]; 
    private Scanner scan1; 

    public ReadFile(String sf1) throws FileNotFoundException 
    { 
     f1=new File(sf1); 
     scan1=new Scanner(f1); 

    } 

    public String[][] getA() 
    { 
     return array; 
    } 

    public void read() throws IOException 
    { 
     int counter=0,i=0; 

     LineNumberReader lnr = new LineNumberReader(new FileReader(f1)); 
     lnr.skip(Long.MAX_VALUE); 
     number_of_words=lnr.getLineNumber(); 
     array = new String[2][number_of_words]; 
     lines = new String[number_of_words]; 
     while(scan1.hasNext()) 
     { 
     String temp; 
     temp=scan1.nextLine(); 
     lines[counter++] = temp; 
         System.out.println(lines[counter-1]+"\t"+lines.length); 

     } 

     Arrays.sort(lines); 
     counter=0; 

     while(i<lines.length) 
     { 
      String temp = lines[i++]; 
      StringTokenizer tk=new StringTokenizer(temp,"\t"); 

      array[0][counter] = tk.nextToken(); 
      array[1][counter++] = tk.nextToken(); 
     } 
    } 
} 
+2

NetBeansのように私はそのタグを削除していますここでは関係ありません。また、より多くの回答を受け入れる - あなたの率はかなり低いです。 – Paul

答えて

1

はこれでファイルを読んで試してみてください:

FileInputStream fis = new FileInputStream(f1); 
LineNumberReader lnr = new LineNumberReader(new InputStreamReader(fis, "UTF-8")); 

あなたが読んで右Charsetを使用する必要がありますファイル。

3

デフォルトでは、スキャナはシステムエンコーディングを使用します。データの特殊文字を読み取っている間は、正しい文字エンコーディングを使用する必要があります。

scan1=new Scanner(f1, "UTF-8"); 

はUTF-8が機能しなかった場合は、アラビア特定のエンコーディングにしようとする必要があります。ここで

は、リンクのカップルが有用である可能性がありFile reading practicesJava supported encodings

1

これはおそらくあなたが探しているものです。

Scanner(System.in, "UTF-8") 
関連する問題