Warm tip: This article is reproduced from serverfault.com, please click

encoding-将问题ANSI转换为UTF8 C#

(encoding - Converting problem ANSI to UTF8 C#)

发布于 2010-09-23 12:16:53

我在c#中将文本文件从ANSI转换为UTF8时遇到问题。我尝试在浏览器中显示结果。

因此,我有一个带有许多重音符号的文本文件。它以ANSI编码,因此我必须将其转换为utf8,因为在浏览器中而不是出现“?”的重音符号。无论我如何尝试转换为UTF8,它仍然是“?”。但是,如果我将notepad ++中的文本文件转换为utf8,则重音字符会被很好地显示。

这是我编写的编码的和平:

    public string Encode(string text)
    {
        // encode the string as an ASCII byte array
        byte[] myASCIIBytes = ASCIIEncoding.ASCII.GetBytes(text);

        // convert the ASCII byte array to a UTF-8 byte array
        byte[] myUTF8Bytes = ASCIIEncoding.Convert(ASCIIEncoding.ASCII, UTF8Encoding.UTF8, myASCIIBytes);

        // reconstitute a string from the UTF-8 byte array 
        return UTF8Encoding.UTF8.GetString(myUTF8Bytes);
    }

你知道为什么会这样吗?

Questioner
JahManCan
Viewed
0
Henk Holterman 2010-09-23 20:18:52

你知道为什么会这样吗?

是的,你太迟了。从文件中读取字符串时,需要指定ANSI。在内存中,它始终是Unicode(UTF16)。