[英]Reading unicode characters from csv file
我有一個csv file
,其中包含英文單詞,后跟印地語翻譯。 我正在嘗試閱讀csv文件並使用它進行進一步處理。 csv文件如下所示:
English,,Hindi,,,
,,,,,
Cat,,बिल्ली,,,
Rat,,चूहा,,,
abandon,,छोड़ देना,त्याग देना,लापरवाही की स्वतन्त्रता,जाने देना
我試圖逐行讀取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();
}
}
}
但是,我得到以下輸出:
English,,Hindi,,,
,,,,,
Cat,,??????,,,
Rat,,????,,,
abandon,,???? ????,????? ????,???????? ?? ???????????,???? ????
我的Java並不是那么好,雖然我已經在SO上發了很多帖子,但我需要更多的幫助才能弄清楚這個問題的確切原因。
對於讀取文本文件,最好使用字符流,例如直接使用java.util.Scanner而不是FileInputStream。 關於編碼,您必須首先確保要讀取的文本文件保存為“UTF-8”,否則保存為“UTF-8”。 我還注意到在我的系統中, 我必須將我的java源文件保存為'UTF-8' ,以使其正確顯示hindi char。
但是我想建議更簡單的方法來讀取csv文件,如下所示:
Scanner scan = new Scanner(new File(csvFile));
while(scan.hasNext()){
System.out.println(scan.nextLine());
}
我認為你的控制台無法顯示印地語字符。 嘗試
System.out.println("Cat,,बिल्ली,,,");
去測試
正如上面的答案所討論的那樣; 解決方案是兩個步驟1)將您的txt文件保存為UTF-8 2)更改Java代碼的屬性以使用UTF-8在Eclipse中; 右鍵單擊Java文件; 屬性 - > Resurces - >文本文件編碼 - >其他 - > UTF-8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.