有没有人知道我可以用来修复因编码问题而“混乱”的字符串的.Net库(优选NuGet包)?
我有第三方提供的Excel *文件,其中包含以下字符串:
Telefónica UK Limited
Serviços de Comunicações e Multimédia
这些条目只是用户错误(例如某人复制/粘贴错误或其他内容),因为同一文件中的其他地方相同的条目是正确的:
Telefónica UK Limited
Serviços de Comunicações e Multimédia
所以我想知道是否有一个库/包/东西需要一个字符串并修复“常见错误”,如çõ
→çõ
和ó
→ó
。我知道这不是100%万无一失,可能会导致一些假阴性,但是有一些经过现场测试的库可以帮助我清理一下我的数据。理想情况下,它会“自动检测”问题并“自动修复”它们,因为我无法总是在错误发生时告诉源编码(和目标编码)是什么。
*文件类型不是很相关,我可能有其他方的文本在其他文件格式中有相同的问题......
答案 0 :(得分:1)
我最好的建议是从相关语言中使用的特殊字符列表开始。
我认为您只使用少数非US-ASCII字符处理葡萄牙语或其他欧洲语言。
我还假设您首先知道错误编码是什么(即代码页),它始终是相同的。
(如果你不能承担这些事情,那么它就是一个更大的问题。)
然后严重编码每个字符,并在源文本中查找结果。如果找到任何内容,您可以将其视为编码错误的文本。
var specialCharacters = "çõéó";
var goodEncoding = Encoding.UTF8;
var badEncoding = Encoding.GetEncoding(28591);
var badStrings = specialCharacters.Select(c => badEncoding.GetString(goodEncoding.GetBytes(c.ToString())));
var sourceText = "Serviços de Comunicações e Multimédia";
if(badStrings.Any(s => sourceText.Contains(s)))
{
sourceText = goodEncoding.GetString(badEncoding.GetBytes(sourceText));
}