【发布时间】:2013-01-11 07:51:30
【问题描述】:
我正在从 db 读取二进制数据并使用代码将其转换为文本。
public String BinaryToText(byte[] data)
{
System.Text.Encoding encEncoder = System.Text.ASCIIEncoding.ASCII;
return encEncoder.GetString(data);
}
上述程序正常工作,但当二进制文件 >= 85mb 被转换时,OutOfMemoryException 如图所示。如何将大型二进制数据无误地转换成字符串。
【问题讨论】:
-
你如何从文件中读取数据?
-
不,我正在从 sqlserver 读取数据
-
你似乎认为 ASCII 对“BinaryToText”就足够了……这是错误的,二进制的编码可以是任何编码。
-
@Esailija 好吧,它可能是对的;这在很大程度上取决于上下文。但是是的:它不太可能是正确的。通常我会期望 UTF-8 或 UTF-16(BE 或 LE)。但它可以是任何编码。或者没有。
-
@MarcGravell 它总是在某种编码中,没有没有编码之类的东西。但是使用 UTF-8 或 OS 代码页并没有什么害处,因为它们是 ASCII 超集……这可能就是为什么存在无编码混淆的原因……因为如此多的编码对 ASCII 字符进行编码与您可以拥有的主要字符完全相同编码搞砸了,而且从来没有注意到它,因为没有人使用过 ASCII 之外的字符,或者当 ASCII 不兼容的编码被引入搞砸组合时,你会注意到它。
标签: c# encoding out-of-memory