首页 > 解决方案 > 无法解码文本

问题描述

例子:

"Заполни профиль"

我试试

var latinString = "Заполни профиль"; // år
Encoding latinEncoding = Encoding.GetEncoding("iso-8859-1");
Encoding utf8Encoding = Encoding.GetEncoding("WINDOWS-1252");

byte[] latinBytes = latinEncoding.GetBytes(latinString);
byte[] utf8Bytes = Encoding.Convert(latinEncoding, utf8Encoding, latinBytes);

var utf8String = Encoding.UTF8.GetString(utf8Bytes);

但它不起作用:

�?аполни п�?о�?ил�?

这是俄语文本,请帮助

标签: c#stringencoding

解决方案


看来,latinStringWin-1252编码的UTF-8字符串。让我们将其返回为UTF-8

  // Uncomment in case of .Net Core or .Net 5
  // Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

  var latinString = "Заполни профиль"; 

  string result = Encoding.UTF8.GetString(
    Encoding.GetEncoding(1252).GetBytes(latinString));

  // Let's have a look
  Console.Write(result);

结果:

  Заполни профиль

推荐阅读