C#中的字符串编码 - 奇怪的字符

时间:2011-10-13 21:00:33

标签: c# encoding

我有一个我需要导入的文件。 问题是我在该文件中有很多字符存在问题。

例如,这些名称是错误的:

Björn(在档案中) - 应该Björn

Ã... ke (在档案中) - 应该Åke

不幸的是我无法使用正确的编码重新创建文件。 还有很多字符是错误的(这些只是例子)。我无法进行搜索并替换所有(如果没有包含所有转换的字典)。

我可以用某种方式解码字符串吗?

感谢Patrik

修改 我之前应该添加的更多信息(我责怪我的疲惫)。 该文件是.xlsx文件。

2 个答案:

答案 0 :(得分:4)

我用Notepad ++调试了这个。我将正确的字符串复制到Notepad ++中。我用了编码|转换为UTF-8。然后我选择了编码|编码为ANSI。这具有将UTF-8字节解释为ANSI的效果。当我这样做时,我最终会得到与你一样的错误价值。很明显,当您阅读文件时,您正在解释的是ANSI而不是UTF-8。

然后解决方案是您的文件已编码为UTF-8。确保在读取文件时将其解释为UTF-8。我不能确切地告诉你如何做到这一点,因为你没有首先展示你如何阅读文件。

您的文件可能不包含byte-order-mark (BOM)。如果是,则在通过传递Encoding.UTF8来读取文件时指定编码。

答案 1 :(得分:0)

我刚刚尝试了你的第一个例子,它肯定看起来像是UTF-8。

目前还不清楚你用什么来查看文件,但如果你用一个理解UTF-8和告诉它的文本编辑器加载它是一个UTF-8文件,应该没问题。

当您使用.NET加载它时,您应该只能使用File.OpenTextFile.ReadAllText等 - 大多数处理.NET编码的IO默认为UTF-8。