byte[] bt = Encoding.default.GetBytes(str);
string str=*****************.GetString(bt);
Encoding.default和系统的区域有关..

解决方案 »

  1.   

    byte[] bt = Encoding.Default.GetBytes(str);
    string str=Encoding.Default.GetString(bt); 这个是根据你的操作系统设置的字符集我们多数是用 这样在简繁体的操作系统上都能用。如果是Default有时在繁体的操作系统上会变成乱码
    byte[] bt = Encoding.UTF8.GetBytes(str);
    string str=Encoding.UTF8.GetString(bt);
      

  2.   

    Encoding.default是指获取操作系统的当前 ANSI 代码页的编码。
      

  3.   

    private void button_takepic1_Click(object sender, EventArgs e)
            {
                string filePath = "D:\\102.jpg";
                FileStream fStreamReadJPG = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                BinaryReader binaryRead = new BinaryReader(fStreamReadJPG);            int fileLenth = int.Parse(fStreamReadJPG.Length.ToString());
                byte[] readBuf = new byte[int.Parse(fStreamReadJPG.Length.ToString())];
                binaryRead.Read(readBuf, 0, int.Parse(fStreamReadJPG.Length.ToString()));
                fStreamReadJPG.Close();            string strTemp;            strTemp = Encoding.Default.GetString(readBuf);
                readBuf = Encoding.Default.GetBytes(strTemp);
                fileLenth = readBuf.GetLength(0);            filePath = "D:\\103.jpg";
                FileStream filestreamwr = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);            BinaryWriter binaryWrite = new BinaryWriter(filestreamwr);            binaryWrite.Write(readBuf, 0, fileLenth);
                binaryWrite.Flush();            filestreamwr.Close();
            }这段程序里面,注释掉:
                strTemp = Encoding.Default.GetString(readBuf);
                readBuf = Encoding.Default.GetBytes(strTemp);
                fileLenth = readBuf.GetLength(0);
    这段后,可以正确复制一张图片。但是项目其他操作需要要加上这段相互转化程序,该如何实现?问题在哪里,求教。
      

  4.   

    private void button_takepic1_Click(object sender, EventArgs e)
            {
                string filePath = "D:\\102.jpg";
                FileStream fStreamReadJPG = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                BinaryReader binaryRead = new BinaryReader(fStreamReadJPG);            int fileLenth = int.Parse(fStreamReadJPG.Length.ToString());
                byte[] readBuf = new byte[int.Parse(fStreamReadJPG.Length.ToString())];
                binaryRead.Read(readBuf, 0, int.Parse(fStreamReadJPG.Length.ToString()));
                fStreamReadJPG.Close();            string strTemp;            strTemp = Encoding.Default.GetString(readBuf);
                readBuf = Encoding.Default.GetBytes(strTemp);
                fileLenth = readBuf.GetLength(0);            filePath = "D:\\103.jpg";
                FileStream filestreamwr = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);            BinaryWriter binaryWrite = new BinaryWriter(filestreamwr);            binaryWrite.Write(readBuf, 0, fileLenth);
                binaryWrite.Flush();            filestreamwr.Close();
            }这段程序里面,注释掉:
                strTemp = Encoding.Default.GetString(readBuf);
                readBuf = Encoding.Default.GetBytes(strTemp);
                fileLenth = readBuf.GetLength(0);
    这段后,可以正确复制一张图片。但是项目其他操作需要要加上这段相互转化程序,该如何实现?问题在哪里,求教。其他操作?那你就加其他操作的地方加这段呀。
      

  5.   

    不要用Encoding.Default来做通讯。
    不同的机器可能有不同的Encoding.Default,可能是GB2312,也可能是Windows‑1252,等等。用:
    string str64 = Convert.ToBase64String(bytes);
    byte[] bytes = Convert.FromBase64String(str64);
      

  6.   

    private void button_takepic1_Click(object sender, EventArgs e)
            {
                string filePath = "D:\\102.jpg";
                FileStream fStreamReadJPG = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                BinaryReader binaryRead = new BinaryReader(fStreamReadJPG);            int fileLenth = int.Parse(fStreamReadJPG.Length.ToString());
                byte[] readBuf = new byte[int.Parse(fStreamReadJPG.Length.ToString())];
                binaryRead.Read(readBuf, 0, int.Parse(fStreamReadJPG.Length.ToString()));
                fStreamReadJPG.Close();            string strTemp;            strTemp = Encoding.Default.GetString(readBuf);
                readBuf = Encoding.Default.GetBytes(strTemp);
                fileLenth = readBuf.GetLength(0);            filePath = "D:\\103.jpg";
                FileStream filestreamwr = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);            BinaryWriter binaryWrite = new BinaryWriter(filestreamwr);            binaryWrite.Write(readBuf, 0, fileLenth);
                binaryWrite.Flush();            filestreamwr.Close();
            }这段程序里面,注释掉:
                strTemp = Encoding.Default.GetString(readBuf);
                readBuf = Encoding.Default.GetBytes(strTemp);
                fileLenth = readBuf.GetLength(0);
    这段后,可以正确复制一张图片。但是项目其他操作需要要加上这段相互转化程序,该如何实现?问题在哪里,求教。其他操作?那你就加其他操作的地方加这段呀。
    我的意思是其他操作要求必须这么转换一次。转换前后byte数组里面的不一样了,把encoding下面的几种字符集都试过了,复制的图片都打不开。