FileStream newFile = File.Create(@"D:\temp\888.txt");
BinaryWriter writer = new BinaryWriter(newFile);
string s = @"真的英雄";
writer.Write(s);
writer.Close();写入以后,888.txt文件结果显示为13个字节,我觉得怎么可能是13个字节,应该是16吧,老大?

解决方案 »

  1.   

                FileStream newFile = File.Create(@"D:\888.txt");
                BinaryWriter writer = new BinaryWriter(newFile);
                string s = "真的英雄";
                writer.Write(s);
                writer.Close();---------------------
    文本内容: 真的英雄   多了一个     13 字节 (13 字节) 4k他为什么会多一个 呢?
                using (StreamWriter sw = new StreamWriter(@"D:\999.txt"))
                {
                    sw.Write(s);
                }
    ---------------------
    文本内容:真的英雄  12 字节  4k
    这个是对的。
      

  2.   

    你在BinaryWriter 构造函数里边没有指定编码方式
    应该是取系统有默认的编码方式
    能看看你生成的文件内容吗
      

  3.   

                FileStream newFile = File.Create(@"D:\888.txt");
                BinaryWriter writer = new BinaryWriter(newFile, Encoding.UTF8);            string s = "真的英雄";
                writer.Write(s);
                writer.Close();这样还是不行。 13 字节 (13 字节)   4k 
      

  4.   

    FileStream newFile = File.Create(@"D:\temp\888.txt"); 
    BinaryWriter writer = new BinaryWriter(newFile); 
    string s = @"真的英雄"; 
    writer.Write(Encoding.Default.GetBytes(s)); 
    writer.Close(); 
      

  5.   

    MSDN: 
    BinaryWriter.Write(String) 
    将有长度前缀的字符串按 BinaryWriter 的当前编码写入此流,并根据所使用的编码和写入流的特定字符,提升流的当前位置。
      

  6.   

    BinaryWriter.Write (String)  
    将有长度前缀的字符串按 BinaryWriter 的当前编码写入此流,并根据所使用的编码和写入流的特定字符,提升流的当前位置。 就是说它前面记录了字符长度,你可以试下把s = "AAA" ,写入后用UE打开,发现是 03 41 41 41 ....... .AAA
    最开始03就是长度,所以多一个字节.
    如果要不多这个字节,就吧string转为byte[]
    看下MSDN上BinaryWriter的方法吧,不同类型处理不一样的,我也是才看的,以前也没注意写到文本还是用StreamWriter吧
      

  7.   


    默认是UTF-8编码,UTF8中文是3字节,你用DEFAULT的话,取计算机的设置,默认中文XP是ANSI,一个中文2个字节