首页 > 解决方案 > 将扩展 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"  , "Á" },
            { "À&quot; , "À" },
            { "Â&quot; , "Â" },
            { "Ä&quot; , "Ä" },
            { "Ã…&quot; , "Å" },
            { "Ç&quot; , "Ç" },
            { "È" , "È" },
            { "É&quot; , "É" },
            { "Ê" , "Ê" },
            { "Ë&quot; , "Ë" },
            { "ÃŒ" , "Ì" },
            { "Ã\x8D"  , "Í" },
            { "ÃŽ" , "Î" },
            { "Ã\x8F"  , "Ï" },
            { "Ã\x90"  , "Ð" },
            { "Ñ&quot; , "Ñ" },
            { "Ã’&quot; , "Ò"},
            { "Ó&quot; , "Ó" },
            { "Ô&quot; , "Ô" },
            { "Õ&quot; , "Õ" },
            { "Ö&quot; , "Ö" },
            { "×&quot; , "×" },
            { "Ø" , "Ø" },
            { "Ù&quot; , "Ù" },
            { "Ú" , "Ú" },
            { "Û&quot; , "Û" },
            { "Ãœ" , "Ü" },
            { "Ã\x9D" , "Ý" },
            { "Ã\xA0" , "à" },
            { "á" , "á" },
            { "â" , "â" },
            { "ã" , "ã" },
            { "ä" , "ä" },
            { "Ã¥" , "å" },
            { "æ" , "æ" },
            { "ç" , "ç" },
            { "è" , "è" },
            { "é" , "é" },
            { "ê" , "ê"},
            { "ë" , "ë" },
            { "ì" , "ì" },
            { "î" , "î" },
            { "ï" , "ï" },
            { "Ã\xAD" , "í" },
            { "ð" , "ð" },
            { "ñ" , "ñ" },
            { "ò" , "ò" },
            { "ó" , "ó" },
            { "ô" , "ô" },
            { "õ" , "õ" },
            { "ö" , "ö" },
            { "ø" , "ø" },
            { "ù" , "ù" },
            { "ú" , "ú" },
            { "û" , "û" },
            { "ü" , "ü" },
            { "ý" , "ý" }
        };

我想知道是否有更好的方法来解决这个问题。我觉得我的解决方案太粗糙了,它不适用于字典中未列出的字节。我想知道是否有一个更简洁的解决方案,它不涉及列出所有扩展案例并用等效的 UTF8 值替换它们。

标签: c#encodingextended-ascii

解决方案


推荐阅读