在c#中将cp1252字符串编码为utf-8字符串

时间:2015-10-13 14:49:19

标签: c# encoding utf-8 cp1252

如何在c#中将cp1252字符串转换为utf-8字符串? 我尝试了这段代码,但它不起作用:

Encoding wind1252 = Encoding.GetEncoding(1252);
Encoding utf8 = Encoding.GetEncoding(1251);
byte[] wind1252Bytes = ReadFile(myString1252);
byte[] utf8Bytes = Encoding.Convert(wind1252, utf8, wind1252Bytes);
string myStringUtf8 = Encoding.UTF8.GetString(utf8Bytes);

1 个答案:

答案 0 :(得分:1)

var myGoodString = System.IO.File.ReadAllText(
    @"C:\path\to\file.txt",
    Encoding.GetEncoding("Windows-1252")
    );

内存中的.NET / CLR string不能是UTF-8。如果您愿意,它只是Unicode或UTF-16。

上面的代码会将CP1252中的文本文件正确读入.NET string

如果您坚持通过byte[] wind1252Bytes,则只需:

var myGoodString = Encoding.GetEncoding("Windows-1252").GetString(wind1252Bytes);