2010-12-17 13 views
12

मैं सीएसवी फ़ाइल एन्कोडिंग यूटीएफ -8 बनाना चाहता हूं। अब, मेरी सीएसवी फ़ाइल जापानी फ़ॉन्ट्स नहीं दिखा सकती है। मैं इस समस्या को हल करने के लिए सी # कोड चाहता हूँ।मैं सी # वी में सीएसवी फ़ाइल एन्कोडिंग यूटीएफ -8 कैसे प्राप्त कर सकता हूं? नेट?

+0

कोड आपके पास पोस्ट करने का प्रयास। कोड को डीबग करना मुश्किल है जिसे हम नहीं देख सकते हैं। –

उत्तर

27

सुसांडा,
मुझे आपके वर्तमान कोड या आपके वास्तविक पाठ के बारे में निश्चित नहीं है जिसे आप सहेजने की कोशिश कर रहे हैं, लेकिन यह आपको सही दिशा में ले जा सकता है।

using(var sw = new StreamWriter("testfile_utf8.csv", false, Encoding.UTF8)) 
{ 
    sw.WriteLine("頼もう"); 
} 

यदि आप Excel में उस फ़ाइल को खोलते हैं, तो यह जापानी टेक्स्ट को अपेक्षित रूप से दिखाएगा।
यदि आप Encoding.UTF8 पैरामीटर शामिल नहीं करते हैं, तो यह गिबिश प्रदर्शित करेगा।

मुझे आशा है कि आप यही खोज रहे हैं।

+3

उपयोग: 'एनकोडिंग.यूटीएफ 8' के बजाय 'नया यूटीएफ 8 एन्कोडिंग (झूठा)' यदि आप बीओएम प्रतीक –

1
StringBuilder sb = new StringBuilder();   


var columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName).ToArray(); 
sb.AppendLine(string.Join(",", columnNames)); 

foreach (DataRow row in dt.Rows) 
{ 
    var fields = row.ItemArray.Select(field => field.ToString()).ToArray(); 
    sb.AppendLine(string.Join(",", fields)); 
} 

File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8); 
3

यह कोड एन्कोडेड सीएसवी फ़ाइल के रूप में सहेजने के लिए एक सीएसवी फ़ाइल से पाठ करने में मदद करता है। इसका उपयोग करने के लिए नीचे कॉल करें और इसे सेव करें।

GetCSVFileContent ("Your_CSV_FileName")

protected byte[] GetCSVFileContent(string fileName) 
     { 
      StringBuilder sb = new StringBuilder(); 
      using (StreamReader sr = new StreamReader(fileName, Encoding.Default, true)) 
      { 
       String line; 
       // Read and display lines from the file until the end of 
       // the file is reached. 
       while ((line = sr.ReadLine()) != null) 
       { 
        sb.AppendLine(line); 
       } 
      } 
      string allines = sb.ToString(); 


      UTF8Encoding utf8 = new UTF8Encoding(); 


      var preamble = utf8.GetPreamble(); 

      var data = utf8.GetBytes(allines); 


      return data; 
     } 
+0

से बचना चाहते हैं तो चेतावनी: प्रीम्बल का उपयोग नहीं किया जाता है। मेरे मामले में प्रस्तावना का उपयोग करना महत्वपूर्ण था, डेटा को preamble + डेटा से सम्मिलित किया जाना चाहिए: डेटा = preamble। कॉनकैट (डेटा)। ToArray(); – razon

संबंधित मुद्दे