如何生成重复的位模式(字符串)并导出到文本文件中?

San*_*VEE 9 c# string text-files

我正在尝试生成一个位模式(重复字符串)并导出到文本文件中,

这是我的代码:

string pattern_01010101 = "";

for (int i = 0; i < 10; i++)
{
     pattern_01010101 += "0,1,0,1,0,1,0,1,";
}

System.IO.File.WriteAllText(@"C:\BField_pattern_01010101.txt", pattern_01010101);
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述


现在,如果我将循环值更改为" 20 ",

string pattern_01010101 = "";

for (int i = 0; i < 20; i++)
{
     pattern_01010101 += "0,1,0,1,0,1,0,1,";
}

System.IO.File.WriteAllText(@"C:\BField_pattern_01010101.txt", pattern_01010101);
Run Code Online (Sandbox Code Playgroud)

结果:

我得到这个有趣的小矩形盒子,

在此输入图像描述

有人可以建议我,我在这里做错了什么?

非常感谢你的时间.. :)

Sri*_*vel 6

我怀疑有一些问题,默认Encoding的使用File.WriteAllText方法.

尝试传递您需要明确的编码,并且工作正常.例如Encoding.UTF8.

File.WriteAllText(@"BField_pattern_01010101.txt", pattern_01010101, Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

我调查过,WriteAllText默认情况下也使用"UTF8Encoding".但唯一的区别是在contructor中传递的参数.Encoding.UTF8使用new UTF8Encoding(true, false);WriteAllText方法使用的位置new UTF8Encoding(false, true);

正如评论中所指出的,物料清单是导致问题的因素,感谢@BjörnRoberg."UTF8Encoding构造函数"的第一个参数定义是否发出BOM.