Sri*_*ram 6 java unicode file-io
我有一个csv file英文单词,后面跟印地语翻译.我正在尝试阅读csv文件并使用它进行进一步处理.csv文件如下所示:
English,,Hindi,,,
,,,,,
Cat,,??????,,,
Rat,,????,,,
abandon,,???? ????,????? ????,???????? ?? ???????????,???? ????
Run Code Online (Sandbox Code Playgroud)
我试图逐行读取csv文件并显示已写入的内容.代码段(Java)如下:
//Step 2. Read csv file and get the string.
FileInputStream fis = null;
BufferedReader br = null;
try {
fis = new FileInputStream(new File(csvFile));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
boolean startSeen = true;
if(fis != null) {
try {
br = new BufferedReader(new InputStreamReader(fis, "UTF-8"));
} catch (UnsupportedEncodingException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
System.out.print("Unsupported encoding");
}
String line = null;
if(br != null) {
try {
while((line = br.readLine()) != null) {
if(line.contains("English") == true) {
startSeen = true;
}
if((startSeen == true) && (line != null)) {
StringBuffer sbuf = new StringBuffer();
//Step 3. Parse the line.
sbuf.append(line);
System.out.println(sbuf.toString());
}
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下输出:
English,,Hindi,,,
,,,,,
Cat,,??????,,,
Rat,,????,,,
abandon,,???? ????,????? ????,???????? ?? ???????????,???? ????
Run Code Online (Sandbox Code Playgroud)
我的Java并不是那么好,虽然我已经在SO上发了很多帖子,但我需要更多的帮助才能弄清楚这个问题的确切原因.
对于读取文本文件,最好使用字符流,例如直接使用java.util.Scanner而不是FileInputStream。关于编码,您必须首先确保将要阅读的文本文件另存为'UTF-8'。我还注意到在系统中,我还必须将java源文件另存为“ UTF-8”,以使其正确显示印地文字符。
但是我想建议一种更简单的方法来读取csv文件,如下所示:
Scanner scan = new Scanner(new File(csvFile));
while(scan.hasNext()){
System.out.println(scan.nextLine());
}
Run Code Online (Sandbox Code Playgroud)
