Не могу прочитать арабский текстовый файл на Java - PullRequest
2 голосов
/ 09 февраля 2012

Я пытаюсь читать арабский текст, используя Java, но сканер не видит никаких элементов и, следовательно, чтение не удается, хотя LineNumberReader распознает строки в текстовом файле.

Я пробовал тот же код на английском текстеи он отлично работает.

Я использую 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();
       }
     }
 } 

Ответы [ 3 ]

3 голосов
/ 09 февраля 2012

По умолчанию сканер использует системную кодировку. Вы должны использовать правильную кодировку символов при чтении данных специальными символами.

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

Если UTF-8 не работает, вам нужно попробовать арабскую кодировку.

Вот несколько ссылок, которые могут быть полезны Практики чтения файлов и Кодировки, поддерживаемые Java

1 голос
/ 09 февраля 2012

Скорее всего, это то, что вы ищете:

Scanner(System.in, "UTF-8")
1 голос
/ 09 февраля 2012

Попробуйте прочитать файл с этим:

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

При чтении файла необходимо использовать право Charset.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...