我创建了一个返回(二进制)文件的Web服务.不幸的是,我不能使用byte []所以我必须将字节数组转换为字符串.我现在做的是以下(但它不起作用):
将文件转换为字符串:
byte[] arr = File.ReadAllBytes(fileName);
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();
string fileAsString = enc.GetString(arr);
Run Code Online (Sandbox Code Playgroud)
要检查这是否正常,我将其转换回来:
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();
byte[] file = enc.GetBytes(fileAsString);
Run Code Online (Sandbox Code Playgroud)
但最后,原始字节数组和从字符串创建的字节数组不相等.我是否必须使用另一种方法将文件读取到字节数组?
使用Convert.ToBase64String将其转换为文本,并Convert.FromBase64String以再次转换.
Encoding用于从文本转换为二进制表示,并从文本的二进制表示再次返回到文本.在这种情况下,您没有文本的二进制表示 - 您只有任意二进制数据...所以Encoding不合适.即使您使用可以"排序"处理任何二进制数据的编码(例如ISO Latin 1),您也会发现当您拥有控制字符等时,许多传输文本的方法都会失败.
Base64编码将为您提供只有ASCII的文本,并且更容易处理.
| 归档时间: |
|
| 查看次数: |
10541 次 |
| 最近记录: |