You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#解码俄文乱码失败,如何将ISO-8859-1乱码正确转为UTF-8俄文?

俄文乱码转码解决方案

根因说明

你遇到的乱码是典型的UTF-8编码俄语文本,被错误使用Windows-1252(西欧单字节编码)解码为字符串导致的,不需要做跨编码转换,只要还原解码流程即可。

正确代码实现

// .NET Core / .NET 5+ 版本需要先注册编码提供程序,否则调用GetEncoding会报错
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

var garbledString = "Заполни профиль";
// 第一步:用错误解码时采用的Windows-1252编码,把乱码字符串转回原始字节数组
byte[] originalUtf8Bytes = Encoding.GetEncoding("Windows-1252").GetBytes(garbledString);
// 第二步:用正确的UTF-8编码解码原始字节,得到正常俄文
string correctRussianText = Encoding.UTF8.GetString(originalUtf8Bytes);

运行后得到的正确结果为:Заполни профиль(俄语含义为"填写个人资料")

原代码错误点

  • 编码逻辑方向完全颠倒,不需要调用Encoding.Convert做跨编码转换,冗余操作破坏了原始字节序列
  • 混淆了Windows-1252和UTF-8的作用场景,Windows-1252是用来把乱码还原为原始字节的编码,不是目标编码

内容的提问来源于stack exchange,提问作者d1plomat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:09:04