繁体   English   中英

C#-字符串存储为Base64,但是检索到的字符串不是有效的base64字符串

[英]C# - String stored as Base64, but the retreived string is not a valid base64 string

我正在使用Base64编码将数据结构中的值存储到字符串中。 基本上我要做的是将字节数组转换为base64字符串

string StoredData = Convert.ToBase64String(ByteArray); 

然后,我将StoredData分为最大长度为256个字符的字符串,并将它们存储为ASCII字符串(在AutoCAD XData中为DxfCode.ExtendedDataAsciiString )。

当我想检索我的数据时,请执行以下操作:

首先,我使用StoredData = sting1 + string2 + ...组合每个256个长字符串StoredData = sting1 + string2 + ...然后使用以下方法将StoredData转换回ByteArray

var ByteArray = Convert.FromBase64String(StoredData);

现在,这对我和我的客户来说一直很好,直到一个月前,我的一位客户崩溃了,并弹出错误。 我要求他将存储的数据发送给我,而我惊讶地发现他的数据包含无效的Base64字符(请参见下面的示例)

tM7x24QLLLALr5ivAx3XFAM7uciYXrCjKXSFd3XOL / KGIc3C + JMO8QjHT / 4C + puYrNLq5r9Is0vpDKyuxw9I6R3f1LuOYSdHS6XgZJEyMvGwSHNRSYJ / a0IoumQftB3XspQRwp4QSd7qcUVsrXw0 + 2RS / sd2vAvUFxEQgwsHaabb01YjchGeyxr1f78A4qy2BL / oHAsRak9UYN0mDzhZgbhpahlgdK3eWd8b2BTM01lWh74pYUrJR + JfQ0tw0Eu㿔

Z / 1JxBMUv2cB6NrFehSuNF9l4dhAaZQ + TcIClZmk / ZC8TJ0rKka / J + HqhLDAwWExB3nXoIi00uJnE7J4R6rU + Q ==

如您所见,前256个长字符串包含无效的Base64字符(㿔)

为什么会这样呢? 这可以与用户计算机有关吗? 我试图复制此错误,但没有成功,而且由于我无法访问他们的计算机,因此我开始认为这可能是他们的事情。

该应用程序使用.Net Framework 4.5版。

编辑:事实证明,客户端已向我发送了一份恢复的文档,该文档没有正确恢复文本字符串,这说明了损坏的字符串。

事实证明,应用程序已崩溃,客户端已使用损坏的字符串恢复了工程图文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM