2015-08-13 17 views
2

我正在研究使用EPPlus將結果輸出到.xlsx文件的解析器。有俄羅斯的幾個硬編碼字符串,我把作爲值某些細胞中所產生的.xlsx使用下面的代碼EPPlus在不正確的代碼頁中給出unicode值.xlsx

ExcelWorksheet wsResult = package.Workbook.Worksheets.Add("Result"); 
wsResult.Cells["A1"].Value = "Абонент:"; 

出於某種原因,在產生的.xlsx我得到了錯誤的代碼頁文本,以便它是顯示爲「ÀáîíåíòÓ」而不是「Абонент」。我試圖把Unicode代碼如下

wsResult.Cells["A1"].Value = "\u0410\u0431\u043e\u043d\u0435\u043d\u0442:"; 

並且結果是正確的。不過,我已經有很多這樣的字符串已經在俄文了,我想避免將它們全部轉換爲代碼。奇怪的是,在我以前用於這個項目的另一臺機器上,一切都很好。但是,當前的設置不同,所以我可能會缺少一些設置。

目前的設置是:

  • 的Windows 8.1的64位英語
  • MS Visual Studio的2015年社區
  • MS Office 2010的英語
  • 設置爲俄羅斯,含所有區域設置。系統區域設置。

我用另外一臺機器在那裏一切都OK的安裝程序:

  • Windows 7的32位英語
  • MS Visual Studio 2008速成
  • MS Office 2010的英語
  • 所有區域設置設置爲俄羅斯,含。系統區域設置。

我正在尋找過去48小時的線索,沒有運氣,我甚至不知道應該責怪誰:Windows,Visual Studio,EPPlus或我自己。後者很可能。任何幫助都感激不盡!

+0

這裏有一些新內容。我發現我仍在使用EPPlus的ver 3.1.1。我試圖更新到最新的4.0.4,它工作得很好,我看到我所有的俄文文本!我很快發佈這個答案作爲答案,但下一次我再次嘗試(沒有改變任何東西!),問題又回來了。現在我很困難。任何想法都非常受歡迎! – remarkov

回答

1

「ÀáîíåíòÓ」是你得到的字符串,如果你編碼「Абонент」使用Crylic encoding代碼頁,然後解碼使用UTF-8編碼生成的字節。

這使我相信,在某些情況下,您的字符串使用utf-8進行編碼,而在其他情況下使用Crylic,並且EPPlus總是將其解釋爲utf-8。

我能看到的最簡單的解決方案是確保所有的字符串總是編碼爲utf-8。如果他們是硬編碼的,應該是從高級保存選項在文件菜單中選擇UTF-8作爲簡單:然而

enter image description here

screenshot of advanced save dialogue

如果你念原來自其他來源的字符串文本(例如從文本文件中讀取),首先需要知道它們是從哪裏進行編碼的,然後可以使用Encoding類重新編碼爲utf-8。

鑑於您描述的症狀,我懷疑您只需從高級保存選項中選擇utf-8即可。 (如果我選擇使用Crylic編碼保存,我可以重新創建您的問題。)

+0

這完全是問題所在!不幸的是,我對Studio不熟悉,很少使用它,出於某種原因,當我在搜索問題時,沒有發現與編碼選項有關的任何內容。感謝您讓我的理智恢復,我已經失去了解決這個問題的任何希望。非常感謝! – remarkov

相關問題