【发布时间】:2012-12-19 09:59:57
【问题描述】:
我有一个从流中读取的字节数组。我想把它转换成字符串。
这对我有用:
var str= new string(bytearr.Select(x=>(char)x).ToArray());
但我觉得有更好的方法吗?有吗?
【问题讨论】:
标签: c#
我有一个从流中读取的字节数组。我想把它转换成字符串。
这对我有用:
var str= new string(bytearr.Select(x=>(char)x).ToArray());
但我觉得有更好的方法吗?有吗?
【问题讨论】:
标签: c#
你可以使用Encoding的内置函数:
string myString = Encoding.UTF8.GetString(bytearr);
http://msdn.microsoft.com/en-us/library/aa332098(v=vs.71).aspx
【讨论】:
你应该使用Encoding的实例
来自msdn
public UTF8Encoding(
bool encoderShouldEmitUTF8Identifier,
bool throwOnInvalidBytes
)
参数
encoderShouldEmitUTF8Identifier
类型:System.Boolean true 指定提供 Unicode 字节顺序标记;否则为假。
throwOnInvalidBytes
类型:System.Boolean
true 指定在检测到无效编码时抛出异常;否则为假。
所以使用
var encoding = new UTF8Encoding(false,true);
encoding.GetString (byteArr);
【讨论】:
你可以使用System.Text.Encoding
string result = Encoding.UTF8.GetString(bytearr);
【讨论】:
var str = System.Text.Encoding.UTF8.GetString(byte[])
【讨论】:
Encoding.UTF8.GetString(bytearr);
您需要知道正确的编码并使用它,UTF8 只是一个示例。根据对你有用的,我猜你要么有 UTF8 要么 ASCII。
【讨论】:
naïve 将是6E - 61 - C3 AF - 76 - 65。注意char的个数与字节数不对应(因为'ï'占用两个字节)。所以我想说他应该使用Encoding.ASCII 或者类似Encoding.GetEncoding(1252) 的东西(如果他知道要使用什么Windows 代码页(如1252“西欧(Windows)”);可以很好地与naïve 配合使用)。