在没有BOM或BOM的情况下检测utf-8

时间:2018-12-27 14:08:00

标签: c# .net encoding utf-8

我正在构建一个压缩程序。我想将LWZ用于utf-8文件(任何urf-8文件),并将BZip用于其他文件(通常是随机二进制文件)。我找不到方法来定义文件utf8。

我在整个堆栈溢出中尝试了this和许多其他方法,但是他们不能为我做这件事。 我可以分享应被视为utf 8的文件和应被视为“其他”的文件的示例

 else if (args[0] != null && args[1] != null)
        {

            if (random binary detected)
            {
                Console.WriteLine("Started Bzip");
                byte[] res = new Bzip2Compressor(65).Compress(File.ReadAllBytes(args[0]));
                File.WriteAllBytes(args[1], res);
                Console.WriteLine("Done!");
                return;
            }
            else //for utf 8 cases (both with bom and without)
            {
                Console.WriteLine("Started LZW");
                byte[] res = LZWCompressor.Compress(File.ReadAllBytes(args[0]));
                File.WriteAllBytes(args[1], res);
                Console.WriteLine("Done");
                return;
            }
        }

注意:我只需要将utf-8和所有其他内容分开

编辑:所以我想检查前n个符号是无效的utf 8;

var bytes = new byte[1024 * 1024];
new Random().NextBytes(bytes);
File.WriteAllBytes(@"PATH", bytes);

总体目标是将检测到的文件像上面的代码中那样作为utf-8文件作为子文件

0 个答案:

没有答案