2013-04-10 31 views
0

我正在研究一個需要很多日文片假名,平假名和漢字字符的項目。原始文件是使用「MS Pゴシック」字體的excel文件。我遇到的問題似乎與其他所有這類問題和c#都是一樣的。我發現的解決方案似乎都開始於在c#程序中添加文本。 我想要做的是讀取我的.xls或.txt文件之一,我已經成爲C#,與數據使用正常的C#函數,如字符串比較。但是,當我這樣做時,會發生注意事項。寫入或顯示數據會產生「?」分數。這裏沒有新東西。在c中編寫,顯示和存儲日文字符#

我嘗試了與C++相同的想法,它完美地工作。

問題是它必須是c#,而不是C++,以便與我正在使用的其他軟件的interop一起工作。 (c系統字符串)與c + +(c字符串)相比,不處理unicode本地處理?

我正在使用Visual Studio C++ 2008 Express和Visual Studio C#2010 Express。 文件是相同的,但它在C++中工作,而不是在c#中。

對不起,我有一段時間沒有用過英語。 我已經嘗試了各種類型,下面是最新的,但仍然「?」標記輸出。

var reader = new StreamReader(File.OpenRead(@"C:\smallerBunShou.txt"), Encoding.UTF8); 
     while (!reader.EndOfStream) 
     { 
      var line = reader.ReadLine(); 
      var values = line.Split(','); 

      listA.Add(values[0]); 
      // listB.Add(values[1]); 
      // listC.Add(values[2]); 
     } 

     int sizeOflistA = listA.Count(); 

     //using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\WriteLines2.txt")) 
     var file = new StreamWriter(File.OpenWrite(@"C:\WriteLines2.txt"), Encoding.UTF8); 
     { 
      foreach (string line in listA) 
      { 
       // If the line doesn't contain the word 'Second', write the line to the file. 
       if (!line.Contains("Second")) 
       { 
        file.WriteLine(line); 
       } 
      } 
     } 

我也曾嘗試Encoding.Unicode等 我的電腦是日本個人電腦,軟件大多是日本人。根據迄今爲止的答案之一,這不是一個Unicode問題,日本的個人電腦使用Shift-JIS,這很可能是我需要研究的。當我解決這個問題時我會發布我的解決方案。

更新: 環顧一下後,我找到了Shift-JIS編碼方案。

Encoding.GetEncoding(932)); 

這解決了我的問題!謝謝@EricFalsken指引我朝着正確的方向前進。

+0

C#具有完整的Unicode功能。你的問題真的沒有這個意義。 「沒什麼新鮮的」?那麼,對我來說,C#應該在Unicode中遇到問題是非常新的。這個問題很可能是在你的應用程序的閱讀部分。你應該改變你的問題,告訴我們究竟是什麼問題,並通過顯示相關的代碼。 – 2013-04-10 08:04:22

+0

Excel中的字符是否正確顯示? 您可以設置表單的字體。或者你可以創建SatteliteAssemblies與翻譯,並讓他們通過交換UICulture加載。 。默認情況下.Net使用該語言的系統語言和字體。 – wonko79 2013-04-10 08:04:38

+0

你用什麼代碼來做到這一點? – 2013-04-10 08:04:43

回答

3

普通的.txt文件不是以Unicode格式保存的。通過運行TextReader和Encoding.Unicode來讀取FileStream時,您需要指定字節格式。

但請注意,大多數日本電腦和文檔不使用Unicode。他們仍然廣泛使用Shift-JIS。

我可以向你保證,C#中的所有字符串本身都支持Unicode。

+0

謝謝,是的,我使用日本電腦,主要是日本軟件。對不起,我忘了提及這一點。接下來我將研究Shift-JIS。 – Nathan 2013-04-10 21:59:08

+1

找到它了! Shift-JIS的編碼方案是Encoding.GetEncoding(932));這解決了我的問題,謝謝! – Nathan 2013-04-10 22:13:34

相關問題