在Celcius符号"°C"之前的奇怪字符"Â"

Chr*_*ris 4 c# unicode

我问这个问题在一天前关于希腊Unicode字符,现在我有一个建立在一个问题.

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

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

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

Total Suspended Solids @105°C   
Run Code Online (Sandbox Code Playgroud)

Excel单元格数据如下所示:

Total Suspended Solids @105°C
Run Code Online (Sandbox Code Playgroud)

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

ps我这个问题中的符号是直接复制和粘贴

hob*_*bbs 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 ++证据反对这一点.

  • Windows-1252,IBM-437和ISO Latin 1中的度字符为0xB0.当编码为UTF-8时,0xB0变为0xC2 0xB0.看起来Excel默认将其读作"ANSI".导入数据时,可以通过选择"文件原点"来告诉它使用UTF-8 - 至少就是它在Excel 2003中的含义. (2认同)

Phi*_*ert 3

我不太确定,但我认为 Excel 需要 Windows-1252 字符编码,因此请确保使用Encoding.GetEncoding("Windows-1252").

例如:

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