2012-02-09 3 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 practices и Java supported encodings

1

Это наиболее вероятно, что вы ищете:

Scanner(System.in, "UTF-8") 
Смежные вопросы