2017-08-15 83 views
1

我使用Base64编码来存储值从我的数据结构转换为字符串。 基本上我做的是转换一个字节数组的base64字符串C# - 字符串存储为Base64,但retreived字符串不是一个有效的base64字符串

string StoredData = Convert.ToBase64String(ByteArray); 

然后我把StoredData到256个字符的最大长度的字符串,并将它们存储为ASCII字符串(在AutoCAD扩展数据作为DxfCode.ExtendedDataAsciiString)。

当我想找回我的数据我做了以下内容:

首先,我结合使用每256长字符串StoredData = sting1 + string2 + ... 然后我用

var ByteArray = Convert.FromBase64String(StoredData); 

现在,这已经很好工作转换StoredData回的ByteArray对我和我的客户来说,直到一个月前,我的客户之一出现了一些崩溃和错误。 我问他送了我他的保存的数据,和我惊讶地看到,他的数据包含无效的Base64编码字符(请参阅下面的示例)

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

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

一个是你能看到的第一个256长字符串具有无效的Base64字符(㿔)

这是为什么发生?这可以与用户电脑相关吗?我试图在没有任何成功的情况下复制这个错误,并且因为我没有访问他们的计算机,我开始认为它可能是他们的一方。

该应用程序使用.NET Framework版本4.5。

编辑:原来客户端给我一个恢复的文档其中没有恢复文本字符串正确这就解释了损坏的字符串。

+3

不可能想,当你已经证明我们的唯一代码两次调用框架方法。 –

+0

@Damien_The_Unbeliever之间的内容是将StoredData保存到AutoCAD中,并在需要时将其恢复。我可以在调试时或从AutoCAD内部看到存储的值,并且它们正常工作。所以基本上我在AutoCAD中打开了一个事务,将这些字符串放到一个ResultBuffer中,然后我提交这些更改。 – mavios

+0

林想知道,因为你是分裂了ASCII和使用“+”来格式化字符串,如果你打到一些副作用,它将其转换成中文Unicode。我不知道这是否有帮助,但该字符的Unicode是U + 3FD4 –

回答

0

原来的应用程序崩溃和客户端已经恢复已损坏的字符串的图文档。