C# byte[]转string, string转byte[] byte[] bt = Encoding.default.GetBytes(str);string str=*****************.GetString(bt);Encoding.default和系统的区域有关.. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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); Encoding.default是指获取操作系统的当前 ANSI 代码页的编码。 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);这段后,可以正确复制一张图片。但是项目其他操作需要要加上这段相互转化程序,该如何实现?问题在哪里,求教。 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);这段后,可以正确复制一张图片。但是项目其他操作需要要加上这段相互转化程序,该如何实现?问题在哪里,求教。其他操作?那你就加其他操作的地方加这段呀。 不要用Encoding.Default来做通讯。不同的机器可能有不同的Encoding.Default,可能是GB2312,也可能是Windows‑1252,等等。用:string str64 = Convert.ToBase64String(bytes);byte[] bytes = Convert.FromBase64String(str64); 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下面的几种字符集都试过了,复制的图片都打不开。 winform中serialport发送数据问题 监控并读取播放中的Powerpoint文件(高分求助) 如何设置IE的代理服务器?并且检测代理服务器是否有效? 调试已显示数据库里的内容,添加新数据源怎么还不行? c#中调用DOS回显的问题 在C#中能否层次化分割一个窗口? 求教!! 报SQL语句出错,但我就是没看出来哪里错了,帮我看看吧! 在设计时支持中会报错:变量“Mask”未声明或从未赋值。 麻烦各位转换一下这个API!100分相送!:) 这个聊天窗口是怎么设计的? 关于多组件时软件版本设置问题
string str=Encoding.Default.GetString(bt); 这个是根据你的操作系统设置的字符集我们多数是用 这样在简繁体的操作系统上都能用。如果是Default有时在繁体的操作系统上会变成乱码
byte[] bt = Encoding.UTF8.GetBytes(str);
string str=Encoding.UTF8.GetString(bt);
{
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);
这段后,可以正确复制一张图片。但是项目其他操作需要要加上这段相互转化程序,该如何实现?问题在哪里,求教。
{
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);
这段后,可以正确复制一张图片。但是项目其他操作需要要加上这段相互转化程序,该如何实现?问题在哪里,求教。其他操作?那你就加其他操作的地方加这段呀。
不同的机器可能有不同的Encoding.Default,可能是GB2312,也可能是Windows‑1252,等等。用:
string str64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(str64);
{
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下面的几种字符集都试过了,复制的图片都打不开。