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();
  }

记事本++中编译它,并运行它来得到这个输出:

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

suhail

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

gupta

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

cse

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

ghazal

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

当文件tes.txt看起来像这样时:

在此处输入图像描述

但是当我从 netbeans IDE 运行相同的程序时,我得到了预期的输出:

suhail
gupta
cse
ghazal

当我在notepad ++中编写后运行相同的程序然后使用命令编译它有什么区别:

javac -encoding UTF-8 checker.java
java checker

并在netbeans IDE中复制相同的程序并按下运行按钮?在第一种情况下,字符串不会从 regex 中拆分出来urdu string

4

1 回答 1

0

FileReaderFileWriter隐式使用系统的默认字符编码。

尝试阅读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) 在构造函数中指定 CharsetInputStreamReader

 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 回答