2013-01-16 8 views
6

मेरे पास csv file है जिसमें अंग्रेजी में उनके हिंदी अनुवाद के बाद शब्द शामिल हैं। मैं सीएसवी फ़ाइल पढ़ने की कोशिश कर रहा हूं और इसके साथ कुछ और प्रसंस्करण कर रहा हूं। csv फ़ाइल तो दिखाई देता है:सीएसवी फ़ाइल से यूनिकोड वर्ण पढ़ना

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

मैं लाइन द्वारा csv फ़ाइल लाइन पढ़ सकते हैं और प्रदर्शित क्या लिखा गया है करने के लिए कोशिश कर रहा हूँ।

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

हालांकि, निम्नलिखित उत्पादन मैं क्या मिलता है: कोड स्निपेट (Java) इस प्रकार है

English,,Hindi,,, 
,,,,, 
Cat,,??????,,, 
Rat,,????,,, 
abandon,,???? ????,????? ????,???????? ?? ???????????,???? ???? 

मेरे जावा कि महान नहीं है और हालांकि मैं पद दिया जाना माध्यम से चले गए एसओ पर, मुझे इस समस्या का सही कारण जानने में और मदद चाहिए।

+1

बस ओर टिप्पणी: आप न बूलियन मूल्यों समानता के लिए आप की तरह 'कर रहे हैं है (लाइन .contains ("अंग्रेज़ी") == सत्य) 'और' (startSeen == सत्य) 'इसके बजाय आप सीधे' if (line.contains ("अंग्रेज़ी")) और '(startSeen) 'का उपयोग कर सकते हैं क्योंकि वे या तो हो सकते हैं सही या गलत। – Smit

+0

@ प्रेषण: बिंदु लिया गया। धन्यवाद! – Sriram

उत्तर

3

परीक्षण करने के लिए पाठ फ़ाइल को पढ़ने के लिए यह सीधे FileInputStream के बजाय java.util.Scanner का उपयोग करके चरित्र धारा, उदा, उपयोग करने के लिए बेहतर है की कोशिश करो। एन्कोडिंग के बारे में आपको यह सुनिश्चित करना होगा कि टेक्स्ट फ़ाइल जिसे आप पढ़ना चाहते हैं उसे 'यूटीएफ -8' के रूप में सहेजा गया है और अन्यथा नहीं। मैं अपने सिस्टम में भी ध्यान देता हूं, मुझे अपनी जावा स्रोत फ़ाइल को 'यूटीएफ -8' के रूप में सहेजना है और साथ ही इसे हिंदी char को सही तरीके से दिखाया जाना है।

हालांकि मैं इस प्रकार csv फ़ाइल को पढ़ने के लिए सरल तरीके का सुझाव देना चाहते:

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

see the output

+0

समस्या यह थी कि मेरी फ़ाइल को 'यूटीएफ -8' के रूप में सहेजा नहीं गया था। जब मैंने संपादक में एक println कमांड चिपकाने के Evgeniy के समाधान को शामिल किया, Eclipse ने मुझे सामग्री को यूटीएफ -8 के रूप में सहेजने का विकल्प दिया। कुछ हद तक, आप दोनों लोगों को यह सही मिला। धन्यवाद! – Sriram

+0

वही समस्या। मेरी जावा फ़ाइल को यूटीएफ -8 के रूप में सहेजा नहीं गया था। सहायता पूर्ण उत्तर के लिए +1। –

+0

मैंने एक नई टेक्स्ट फ़ाइल बनाई और वहां कुछ देवनागरी (हिंदी/मराठी) शब्द लिखे। ग्रहण की बचत करते समय मुझसे पूछा कि क्या मैं इसे यूटीएफ -8 के रूप में सहेजना चाहता हूं। मैंने कहा हाँ। तो मुझे लगता है कि फ़ाइल आवश्यक प्रारूप में है। लेकिन ऊपर कोड काम नहीं करता है। यह कुछ भी प्रिंट नहीं करता है। अगर मेरे पास केवल अंग्रेजी वर्ण हैं; तो केवल यह प्रिंट करता है। क्या यह किसी भी जावा संस्करण के लिए विशिष्ट है? –

2

मुझे लगता है कि आपका कंसोल हिंदी वर्ण नहीं दिखा सकता है।

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

+0

मैंने संपादक में आपका आदेश आज़माया और ऐसा लगता है कि यह समस्या है। फ़ाइल को सहेजने पर, ग्रहण ने यूटीएफ -8 में कोड को सहेजने के विकल्प लाए। अब यह काम कर रहा है। धन्यवाद! – Sriram

0

तो जैसा कि ऊपर जवाब में चर्चा की; समाधान यह दो चरणों 1) अपनी txt फ़ाइल को यूटीएफ -8 2 के रूप में सहेजें 2) यूटीएफ -8 का उपयोग करने के लिए अपने जावा कोड की संपत्ति बदलें ग्रहण में; जावा फ़ाइल पर राइट क्लिक करें; गुण -> Resurces -> पाठ फ़ाइल इनकोडिंग -> अन्य -> ​​UTF-8

देखें स्क्रीनशॉट पर दिए गए http://howtodoinjava.com/2012/11/27/how-to-compile-and-run-java-program-written-in-another-language/