如何在C#中了解字符串编码

3
我从一个我无法控制的第三方程序获取了一个字符串。我的代码以HTML格式输出此字符串。这在英语中可以正常工作,但在其他语言中会以奇怪的方式显示。例如,西班牙语中的重音看起来很奇怪,东方语言(如韩语)中的字符看起来非常奇怪。我相信我需要做一些编码工作,以便所有语言都能正确显示。
我的编码理解有点差,因此在发布真正的问题之前,我直觉认为问题是:“如何在C#中对其进行UTF-8编码”,我想通过发布更简单的问题来更好地了解此问题。
我的问题是:如何知道输入字符串使用的编码类型?在西班牙语中,当我得到一个重音时,它看起来像这样:“Acción”,而不是“Acción”。这是ANSI还是我正在处理什么?
非常感谢!

3
从字节流中很难确定编码方式。您需要向第三方程序的制造商询问其输出的编码方式,并使用相同的编码方式进行读取。从您的描述来看,很可能是Unicode编码。 - Oded
1个回答

8

我得到了一个口音: "Acción"

存在字符Ã是一个明显的标志。带重音的大写字母A字符具有字符代码0xC0及以上。这通常是双字节utf-8编码字符中的第一个字节。ó字形的代码点为U+00F3,其utf-8编码为0xC3 + 0xB3。这些是Ã和³的代码点。

这些字符串是以utf-8编码的,但您正在使用像Encoding.Default这样的8位编码进行读取。


1
非常感谢,汉斯。这完全回答了我的问题。您知道我如何在C#中以UTF-8的格式将其保存为字符串吗?您建议我发布一个新问题吗? - Gaara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接