在摄氏度符号“°C”之前的奇怪字符“”

时间:2009-09-10 17:46:22

标签: c# unicode

前一天我问过question关于希腊Unicode字符的问题,现在我有一个基于那个问题的问题。

提取完所有数据后,我试图准备将其导入Excel。我不得不选择制表符分隔文件,因为我的一些数据包含逗号(幸运的是我!)。

在将数据导入Excel后,我遇到的问题是一个非常奇怪的问题。

Notepad ++中的列数据如下所示:

Total Suspended Solids @105°C   

Excel单元格数据如下所示:

Total Suspended Solids @105°C

我不明白为什么会这样。这是否与度数符号的表示有关?

P.S。我这个问题中的符号是直接复制和粘贴

3 个答案:

答案 0 :(得分:7)

  1. (更有可能)Excel将您的文本数据解释为latin-1或windows-1252,而不是UTF-8。如果您将UTF-8字节用于“°”(0xc2 0xb0)并将每个字节解释为latin-1或windows-1252的字符,则会获得“°”。导入时是否有输入编码选项?
  2. (不太可能)Excel正在做正确的事情,但是您对数据进行了双重编码(编码为UTF-8,然后将其重新解释为8位编码并再次编码 作为UTF-8或任何其他Unicode编码)。 Notepad ++证据反对这一点。

答案 1 :(得分:3)

我不是很确定,但我认为Excel需要Windows-1252字符编码,因此请务必使用 Encoding.GetEncoding("Windows-1252") 创建文本文件。

例如:

using (var writer = new StreamWriter(fileName,false,Encoding.GetEncoding("Windows-1252"))
{
 ....
}

答案 2 :(得分:0)

您可以将UTF-8 BOM用于您的文件。