//content:base64(utf-8)的编码字符串
byte[] bytes = Convert.FromBase64String(content);
using (FileStream fs = new FileStream("c:\\test.txt", FileMode.OpenOrCreate))
{
     fs.Write(bytes, 0, bytes.Length);
}
string decode = Encoding.GetEncoding("utf-8").GetString(bytes);问题:写入文件的内容和decode变量保存的不一样,怎么回事?

解决方案 »

  1.   

    BEB/01vMSkUWca9/kVSve9kjU2cNwbenzFdzuTTmdtK4o8yC+BSzg43KStdX7v2zr571kS1Z04MAIj/7H3b3hq7+9OYe04JlYzAMl85B2QJGysKMBvchqdhs3pLFHAPDEiGQqowSkVuI/Oy3moGz7UrqSrvLnSuJzt10qOw9NgiXk4gkV1yH+buOaMmlelSLylTvltWFe3zgmCtu85hCBgTkvLTW9Bm9yZDjMi2f+Nztb1XTawWq2AEscoNcVc91ppZX7BQpJyyUUj2fhmriV+9G1nRk97MDj+5JECWCWVwUYSwQOgmf6bqDh/66WWZ8coAKqImKQrqj9okxXwPaGNfOLF7RnJfet1cwj79lsC9lO9Z7QqpnpvoVThDf2uaamNjb1xR7qcxMTDpxuDg3Xi4gAf1YFHXKw9AWH6Cb1QNVjElI23l+4OHsY722NC/haSHNAMBC64+WU0G7LGRox2MwDJfOQdkCGBK+iSjzp4bX4RlfoIzARJ3Lydj0UA+gvNhBs4I9HGIl+a/K1Eim24uwK08lqr7W+eGQ2TMcIr4WXB7oFwXP4AnhvyrIdAH79nBiyx/9xk8T65S8R/p4jWMwDJfOQdkCVOkNsIN/iUF23l9ij+iU3ohHBHo2/cUcWK6DPJG3+JA0S64kXO8pbcO6ISffu9HjNmgBCa04ZeVDHpdABK544Mtn0w8LmqSxiWROQGbubLe+WP38htHEkybySj1jdvU+B1eWft3Am0buUK+uWFNd219b7E5Bi/BxONLSYYt0maC4HSfxWqrpA5iZyHmlvDbPOYIrJNuG3V4MngdzK/ZoWspeb1iqxPM0gmXMghvfKq7+RpkE09ZuUr9EiU47N48l1zNFbBMrrL8HiBwsSL1NNGxU7DjjG170ztUo+ACcrLU7VQluO+g0p9gvWiZpAuSS5TWmZ7tuHkd50hlqYJuxoYa/kwqguTzjZqNP8aX/jxIjtW3ik2KNJ+9J0jRbIWAPONJu89FqLcKwtg4clnXrCVr26SZ/CWaN+d2WxgiDVPgv2IkMseCuX6l0BRuetTN5mwomrid3sMHbmvODFmB5d9llFwW52ROUP4K6V9OBeSydb9xwcISqXGiORDtaxmyICwPzaXovl3iCNZ4gu+V827MZNM8FXpkraAUy/G8/z41kkcp90BBAY7JrjaR6HAQ04fgsFc2cpRDU5IZeQcqEhwI5s0tYl2OgsE3IINqlZBb77n6SUg/V3M7VKPgAnKy1lm+rMqJkCySQKZf6GLOyTTXPTMXrH9ZLhnQxdWZUZNL33yB0fYvlNcwLnpE0ayggszATsPW3ALd/AspmARNorWKpc7Q9Pgkf2dvOfI/VE1eATEvsVQ796nLy7hYeU+kv9wnXcs9Oxk9hOzt5uzVU/ANfhJwvl9E5NUMzKKLOr5vjKe/6ks7Lf+AIsQiL/w2PRHcetPmv+JJtzL3GvVLJbJYNCB3WxsW7LbEhTHEjlRkKl1mYhdp9MGWt5D/YL+qltpH9wvFs+qvH7nk4v8fnDrFshCDnZ4gxAdO86PE5+lAdJ1MnQCLjHbaR/cLxbPqrlOcz6PrVambfoxxJ1Pg5t83wmR6vM7fTrZa6AAM5D8z+ldBYsx1Ll78DOXi7moCmdRbD7xuCpoYwTuV9L25DOJ622+3ZqodoO7ix9OcCpcRY3XIpAF6Sr4k4e7P783Mz+zm5NO5IUgBhMg6puQ7QZUrZYQuKxfHNxKIP5O78J2NfzR98Ka8RWsheY/45P3hIFp15zK3dgG6fnT11q0a6IeKeK4ifhwPi
      

  2.   

    txt是按照操作系统的编码设置的,你存的是ansi格式的,你
    string decode = System.Text.Encoding.GetEncoding("GB2312").GetString(bytes);
    就可可以保证一致了
      

  3.   


    你是怎么判断不一样的?
    我在Win7中文版下,decode 内容和txt文件里面的内容是一样的
      

  4.   

    我的是xp中文系统,把decode返回的数据粘贴在文本文件中后直接用工具做比较(beyond Compare),还有就是直接打开文件来看,也是有差别的。
      

  5.   

    base64 编码  和  utf-8 编码完全是两码事
      

  6.   

    先google什么事base64 string
      

  7.   

    byte[] bytes = Convert.FromBase64String(content);
    decode = Encoding.GetEncoding("GB2312").GetString(bytes);
    byte[] buffer = Encoding.GetEncoding(("GB2312").GetBytes(decode);也做个这样的测试
    bytes和buffer两个数组不一样
      

  8.   

    因为互联网上不是所有的二进制数据都能传递,所以,把二进制数据变为base64字符串,因为这样的字符串在网络上的表示是一致的
    getencoding.getbytes 是这个字符串以utf-8编码下 计算机内部二进制表示形式和base64 编码完全是两码事
      

  9.   

    文本文档好像没有GBK的编码,使用其他编辑器保存为GBK试试string content = "aGVsbG/E47rD";
                byte[] bytes = Convert.FromBase64String(content);
                string str = Encoding.GetEncoding("GBK").GetString(bytes);
                Response.Write(str);
    输出  hello你好
    说明是文本的编码问题
      

  10.   


    太感谢各位了,我这里还是求解,为什么bytes和buffer的值不一样呢?大侠们,如果可以请使用我提供的字符串做测试。
      

  11.   

    你提供的Base64能转为byte[],但用UTF-8编码回字符串是不行的,会乱码,问题不出现在你这个解码这里,应该是编码的代码有问题,或你给出原字符串,你编码为Base64给你看看
      

  12.   


    byte[] bytes = System.Text.Encoding.Default.GetBytes(content);
    FileStream fs = new FileStream("c:\\test.txt", FileMode.Create);
    fs.Write(bytes, 0, Convert.ToInt32(bytes.Length));
    fs.Flush();
    fs.Close();
    string decode = System.Text.Encoding.Default.GetString(bytes);
    //将字节数组再转成字符串!!!//--bak-备份的方法也能用
    //string decode = System.Text.Encoding.Default.GetString(bytes, 0, bytes.Length);
    //可以标明起点和个数在字节数组中间获取!!!
    //StreamReader sr = new StreamReader("c:\\test.txt", System.Text.Encoding.Default);
    //string decode = sr.ReadToEnd();
    //--bak-备份的方法也能用
      

  13.   

    如果你解出来的decode 是正常字符,这个是成立的,但一但出现乱码,再次转换是会不同的,所以你通过字符串作为中间媒介去做转换是不对的,应该要做byte[]去做中间的媒介,这个才是可靠的