2009-09-10 16 views
3

我在一天前詢問了這個關於希臘Unicode字符的question,現在我有一個建立在這個問題上的問題。學位之前的怪異字符「°C」

提取我的所有數據後,我試圖準備將其導入到Excel中。我不得不選擇一個製表符分隔的文件,因爲我的一些數據包含逗號(幸運我!)。

將數據導入Excel後,我遇到的問題非常奇怪。

在記事本++列數據是這樣的:

Total Suspended Solids @105°C 

的Excel單元格中的數據是這樣的:

Total Suspended Solids @105°C 

我不明白爲什麼會這樣。這是否與代表度符號的表現有關?

p.s.我在這個問題上的符號是直接複製和粘貼

+1

將輸出流格式顯式設置爲UTF8將糾正Excel中的問題。 var sw = new System.IO.StreamWriter(fs,Encoding.UTF8) – bwing 2017-02-01 01:48:04

回答

2

我沒有絕對的把握,但我認爲Excel中預計的Windows-1252字符編碼,所以一定要創建一個使用Encoding.GetEncoding("Windows-1252")文本文件。

例如:

using (var writer = new StreamWriter(fileName,false,Encoding.GetEncoding("Windows-1252")) 
{ 
.... 
} 
6
  1. (更可能)的Excel正在解釋的文本數據作爲Latin-1的或窗口1252,而不是UTF-8。如果將UTF-8字節作爲「°」(0xc2 0xb0)並將每個字節解釋爲latin-1或windows-1252的字符,則會得到「°」。進行輸入時是否有輸入編碼的選項?
  2. Excel做的是正確的事情,但是你對數據進行雙重編碼(編碼爲UTF-8,然後將其重新解釋爲8位編碼,並將再次編碼爲作爲UTF-8或任何其他的Unicode編碼)。 Notepad ++證據與此不符。
+0

@Hobbis:好的,但是,原始文件在Excel中,並且此特殊「Â」字符不存在 – Chris 2009-09-10 17:54:21

+0

往返數據可能會引入如果您將代碼頁從非UTF8轉換爲UTF8,則需要額外的字符。 – fbrereto 2009-09-10 17:56:35

+2

Windows-1252,IBM-437和ISO Latin 1中的度數字符爲0xB0。當它編碼爲UTF-8時,0xB0變爲0xC2 0xB0。它看起來像Excel在默認情況下將其讀爲「ANSI」。當您導入數據時,您可以通過選擇「文件來源」來明確告訴它使用UTF-8 - 至少在Excel 2003中是這樣的。 – 2009-09-10 17:57:01

0

您可以爲您的文件使用UTF-8 BOM。