7

私はcsv file英語の単語とそれに続くヒンディー語の翻訳を含むを持っています。csvファイルを読み取って、さらに処理しようとしています。csvファイルは次のようになります。

English,,Hindi,,,  
,,,,,  
Cat,,बिल्ली,,,  
Rat,,चूहा,,,  
abandon,,छोड़ देना,त्याग देना,लापरवाही की स्वतन्त्रता,जाने देना  

csvファイルを1行ずつ読み取り、書き込まれた内容を表示しようとしています。コードスニペット(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に関する多くの投稿を経験しましたが、この問題の正確な原因を解明するために、さらに支援が必要です。

4

3 に答える 3

5

テキストファイルを読み取るには、FileInputStreamの代わりにjava.util.Scannerを直接使用するなど、文字ストリームを使用することをお勧めします。エンコーディングについては、最初に、読みたいテキストファイルが「UTF-8」として保存されていることを確認する必要があります。また、私のシステムでは、Javaソースファイルを「UTF-8」として保存して、ヒンディー語で正しく表示されるようにする必要があることに気付きました。

ただし、次のようにcsvファイルを読み取る簡単な方法を提案したいと思います。

Scanner scan = new Scanner(new File(csvFile));
while(scan.hasNext()){
   System.out.println(scan.nextLine());
}

出力を見る

于 2013-01-16T06:32:26.420 に答える
2

コンソールにヒンディー語の文字を表示できないと思います。試す

System.out.println("Cat,,बिल्ली,,,");

テストする

于 2013-01-16T06:30:39.700 に答える
0

したがって、上記の回答で説明したように、解決策は2つのステップです1)txtファイルをUTF-8として保存します2)EclipseでUTF-8を使用するようにJavaコードのプロパティを変更します。Javaファイルを右クリックします。プロパティ->リソース->テキストファイルエンコーディング->その他->UTF-8

http://howtodoinjava.com/2012/11/27/how-to-compile-and-run-java-program-written-in-another-language/にあるスクリーンショットを参照して ください

于 2015-01-10T11:36:01.703 に答える