c# - 无法解码文本
问题描述
例子:
"Заполни профиль"
我试试
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);
但它不起作用:
�?аполни п�?о�?ил�?
这是俄语文本,请帮助
解决方案
看来,latinString
是Win-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);
结果:
Заполни профиль
推荐阅读
- c - 错误:二进制 + 的无效操作数(有 'int (*)()' 和 'int (*)()')
- javascript - NodeJS,Express 与 Socket.io 交互
- tomcat - 无法识别 tomcat-users.xml 凭据,tomcat 中用户的密码/令牌无效
- angular - 实现指数退避功能时如何处理错误?
- database - 如果需要独立查询数据,是否应该对 NoSQL (dynamodb) 表进行非规范化?
- mongodb - MongoDB 使用 Meteor 应用程序运行缓慢。查询慢,查询太多,同一用户有多个连接
- azure-active-directory - userPrincipalName 不能用于查询 Graph
- html - 将鼠标悬停在一个 div 上使另一个消失
- javascript - 当材质为 MeshPhongMaterial 时,无法在使用 Three.js 绘制的圆环中着色
- sql - 从 Oracle 循环输出变量结果