c# - 将扩展 ASCII 转换为 UTF8
问题描述
我被要求解决文件中的编码问题。它应该是 UTF8 格式,但实际上是扩展的 ASCII 格式。
结果是一个包含以下情况的文件:
巴西利亚;Eletrônicos e Informá tica Câmeras e Acessórios música
当它实际上应该是:
Brasília Eletrônicos e Informática Câmeras e Acessórios música
我用这段代码解决了它:
private static string FixEncodingIssues(string str)
{
string fixedStr = str;
foreach (KeyValuePair<string, string> pair in encodingErrosDic)
fixedStr = fixedStr.Replace(pair.Key,pair.Value);
return fixedStr;
}
private static Dictionary<string, string> encodingErrosDic = new Dictionary<string, string>()
{
{ "Ã" , "Ã" },
{ "Ã\x81" , "Á" },
{ "À" , "À" },
{ "Â" , "Â" },
{ "Ä" , "Ä" },
{ "Ã…" , "Å" },
{ "Ç" , "Ç" },
{ "È" , "È" },
{ "É" , "É" },
{ "Ê" , "Ê" },
{ "Ë" , "Ë" },
{ "ÃŒ" , "Ì" },
{ "Ã\x8D" , "Í" },
{ "ÃŽ" , "Î" },
{ "Ã\x8F" , "Ï" },
{ "Ã\x90" , "Ð" },
{ "Ñ" , "Ñ" },
{ "Ã’" , "Ò"},
{ "Ó" , "Ó" },
{ "Ô" , "Ô" },
{ "Õ" , "Õ" },
{ "Ö" , "Ö" },
{ "×" , "×" },
{ "Ø" , "Ø" },
{ "Ù" , "Ù" },
{ "Ú" , "Ú" },
{ "Û" , "Û" },
{ "Ãœ" , "Ü" },
{ "Ã\x9D" , "Ý" },
{ "Ã\xA0" , "à" },
{ "á" , "á" },
{ "â" , "â" },
{ "ã" , "ã" },
{ "ä" , "ä" },
{ "Ã¥" , "å" },
{ "æ" , "æ" },
{ "ç" , "ç" },
{ "è" , "è" },
{ "é" , "é" },
{ "ê" , "ê"},
{ "ë" , "ë" },
{ "ì" , "ì" },
{ "î" , "î" },
{ "ï" , "ï" },
{ "Ã\xAD" , "í" },
{ "ð" , "ð" },
{ "ñ" , "ñ" },
{ "ò" , "ò" },
{ "ó" , "ó" },
{ "ô" , "ô" },
{ "õ" , "õ" },
{ "ö" , "ö" },
{ "ø" , "ø" },
{ "ù" , "ù" },
{ "ú" , "ú" },
{ "û" , "û" },
{ "ü" , "ü" },
{ "ý" , "ý" }
};
我想知道是否有更好的方法来解决这个问题。我觉得我的解决方案太粗糙了,它不适用于字典中未列出的字节。我想知道是否有一个更简洁的解决方案,它不涉及列出所有扩展案例并用等效的 UTF8 值替换它们。
解决方案
推荐阅读
- reactjs - 在开玩笑断言测试之前如何等待事件发生?
- postgresql - Postgres 睡眠时间被添加到总查询运行时而不是输出中
- c# - Wpf在图像和mvvm控件之间绘制对角线
- postgresql - 为什么在包装的 PLPGSQL 函数中查询比本身慢得多?
- json - 使用 i18next-conv 时无法将 .po 文件转换为 .json 文件
- javascript - 如果打开新选项卡,JSZIP 执行将停止
- json - Flutter 需要帮助解析 ListView 中的数据
- python - 无法解释的速度性能下降。方法实例化相关?
- facebook-graph-api - Facebook feed api使用C#将csv上传到目录
- angular - 如何根据复选框选择启用表单控件