【发布时间】:2017-02-03 17:45:14
【问题描述】:
我使用Convert.FromBase64String() 来解码base 64 编码的字符串。该字符串实际上是一个 XML 文件,其中包含 base 64 编码图像。例如
data:image/png;base64,iVBORw0KGgoAA...
我得到以下异常:
System.FormatException:输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符。
问题出在哪里?双基64编码? base 64 编码数据中的字符串image/png;base64?在线工具完全没有问题。
编辑:
现在我尝试从 XML 文件中删除 image/png;base64 部分,但我仍然收到此错误。然后我尝试用同样的错误解码字符串YWJj!?如果我使用此代码
byte[] dataBuffer = Convert.FromBase64String(base64string);
我得到了上述异常。如果我改用
byte[] dataBuffer = Convert.FromBase64String("YWJj");
确实有效。根据 Notepad++,文件的编码是UTF-8。有什么想法吗?
编辑 2:
String.Equals 表示两个字符串 YWJj 不相等,尽管 Locals 窗口显示它们是:
顺便说一句,上面的代码没有抛出异常,因为我使用了string test = "YWJj";。为什么它适用于本地定义的变量,但不适用于传递的字符串?我觉得不是线程问题,因为我做了上面的函数,只调用了一次。
【问题讨论】:
-
您不应该删除
data:image/png;base64,部分吗? -
只使用数据的编码部分作为
Convert.FromBase64String()的输入 -
我无法删除它。但问题是
Convert.FromBase64String()是否不适用于此类字符串... -
显示代码如何删除
image/png;base64并显示调试时的变量值。 -
@BWA:我直接从文件中删除了
image/png;base64,然后将其进行base 64编码并保存为项目中的文件。然后我以字符串的形式读取文件并尝试对其进行解码。