2012-02-09 84 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 2012-02-09 16:58:09

回答

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")