2015-10-13 71 views
1

我如何可以将cp1252字符串转换为utf-8字符串在c#中? 我尝试这样的代码,但它不工作:cp1252字符串编码为utf-8在c#中的字符串

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

'编码UTF8 = Encoding.GetEncoding(1251);'代码页1251是不是UTF8。 – stuartd

+0

'编码utf8 = Encoding.UTF8;' – Equalsk

回答

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

一个.NET/CLRstring在内存不能为UTF-8。它只是Unicode,或者如果你喜欢,就是UTF-16。

上述代码将正确读取CP1252中的文本文件,并将其转换为.NET string

如果你坚持通过byte[] wind1252Bytes去,这简直是:

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