将Base64转换为字符串插入空格

Moh*_*bas 0 c# xml string base64

我正在尝试将Base64编码的字符串转换为文本.我正在使用以下代码:

public static string Base64Decode(string base64EncodedData)
{
    var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
    return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}
Run Code Online (Sandbox Code Playgroud)

不知何故,它确实有效,但它会在每个字符后面添加空格.此外,它在转换后的字符串的开头添加了一个无效字符.Base64字符串中的内容是一个XML,因此当它将其转换为文本并放入空格时,XML将变为无效.有没有替代方案?

这是转换后的示例输出:

? < ? x m l  v e r s i o n = " 1 . 0 "  e n c o d i n g = " U T F - 1 6 "  s t a n d a l o n e = " n o " ? >   < I m p o r t >     < o p t i o n s >       < P r o c N a m e > E R P N u m b e r < / P r o c N a m e >       < J o b I D > A N L 0 0 1 8 5 0 < / J o b I D >     < / o p t i o n s >     < R o w >       < D o c I d  / >       < E R P N u m b e r  / >     < / R o w >   < / I m p o r t > 
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

看起来原始二进制数据是使用UTF-16字符串转换为字节,UTF-16匹配encoding="UTF-16"文本的一部分.将二进制数据转换回字符串时,需要使用正确的编码:

return Encoding.Unicode.GetString(base64EncodedBytes);
Run Code Online (Sandbox Code Playgroud)

这是假设您无法改变首先生成数据的内容.如果您可以将其更改为使用UTF-8,那么如果文本全部为ASCII字符,则最终会得到一半的数据...