c# - 无法将文本从一种编码解码为另一种编码
问题描述
我从 html 网站阅读了一些文本,需要存储数据。我从网站http://alexpad.com/textdecoder知道源编码(iso-8859-1)和目标编码(windows-874)
源文本是“áÁèÃÔÁ”,我需要将其转换为“แม่ริม”但是输出始终是“??????” 它们是 [63,63,63,63,63,63] 的数组
string text = "áÁèÃÔÁ";
Encoding fromEncoding = Encoding.GetEncoding("iso-8859-1");
Encoding toEncoding = Encoding.GetEncoding("windows-874");
byte[] fromBytes = fromEncoding.GetBytes(text);
byte[] toBytes = Encoding.Convert(fromEncoding, toEncoding, fromBytes);
string result = toEncoding.GetString(toBytes);
预期结果是“แม่ริม”实际结果是“??????” 这是错误的
解决方案
两种编码之间的差值是 160。那么一个小写字母和另一个大写字母呢?
string iso = "áÁèÃÔÁ";
string[] isoBytes = iso.Select(x => ((byte)x).ToString()).ToArray();
Console.WriteLine("Iso " + string.Join(",",isoBytes));
string win = "แม่ริม";
string[] winBytes = win.Select(x => ((byte)x).ToString()).ToArray();
Console.WriteLine("Windows " + string.Join(",",winBytes));
Console.ReadLine();
推荐阅读
- postgresql - Postgres.app 中的 initdb 不会创建 postgres &template1 数据库
- python - 如何在python中预处理包含网站链接(主机页面和登陆页面)的数据以进行机器学习训练?
- html - ..code:: 中的彩色文本 - reStructuredText 中的环境 - 文件 (.rst)
- aws-lambda - 在 Lambda 函数中调用 DynamoDB 时,如何在 Amplify 中引用 GraphQL 模型使用的表的名称?
- javascript - 如何将 JSON 对象数组转换为有效的 XML?
- javascript - 为什么我不能在 JS 中删除全局变量?
- capacitor - 在 Capacitor v3 中使用离子电容器 Angular 实现条带支付
- flutter - 如何在颤动中制作安全的 key.properties 文件
- javascript - GA 事件跟踪 - 代码未触发
- c# - 剃刀页面,将所有复选框作为值列表返回