今天我要分享一个好用的 .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 里装它: