2015-10-13 3 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

'Encoding utf8 = Encoding.UTF8;' – Equalsk

ответ

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

A .NET/CLRstring в памяти не может быть UTF-8. Это просто Юникод, или UTF-16, если хотите.

Приведенный выше код будет правильно читать текстовый файл в CP1252 в .NET string.

Если вы настаиваете на проходящие через byte[] wind1252Bytes, это просто:

var myGoodString = Encoding.GetEncoding("Windows-1252").GetString(wind1252Bytes); 
Смежные вопросы