utf. unknown库,让你彻底解决中文乱码的问题

今天我要分享一个好用的 .NET 库,让你彻底解决中文乱码的问题。经常处理文件的开发者都有个习惯,那就是先试 UTF-8,如果不行就退而求其次用 GBK。但我给你说啊,这个套路其实根本不管用,因为 UTF-8 有个特点,即使你给它乱码的字节流,它也会尽力去解析。不信你看下面这个例子:我们想把一个字节数组转成字符串,先试 UTF-8:textContent = Encoding.UTF8.GetString(content)。如果这里出现了问题,我们就会 catch 住这个异常,然后去用 GB2312 来解码:Encoding.GetEncoding("GB2312").GetString(content)。 可是你猜怎么着?其实这个 try-catch 根本就不会执行!因为哪怕你给它一堆不合法的 UTF-8 字节,Encoding.UTF8.GetString 也会勉强把它们转成字符。这时候你拿到的 textContent 就会变成一堆乱码。那到底该怎么办呢?我给你推荐一个神器:UTF.Unknown 库。 第一步是在 NuGet 里装它:。 第二步就是写个检测函数:给这个 DetectEncoding 方法喂进去一个 byte[],然后它会自动用 CharsetDetector 这个工具去扫描字节流里的统计规律。如果成功了,就返回 CharsetDetector.DetectFromBytes(content).Detected.Encoding;要是实在不行,就回退到默认的 GB2312 编码。 这里面的关键逻辑在于:先相信智能检测的结果(因为它是根据统计学原理来猜的),要是没猜出来才去保底用 GB2312。 这么做的好处是让程序变得更健壮,再也不用因为 try-catch 抓不住异常而显示一堆乱码了。大家如果在项目里也碰到这种乱码烦恼,不妨试试这个方法吧!