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)
看起来原始二进制数据是使用UTF-16字符串转换为字节,UTF-16匹配encoding="UTF-16"
文本的一部分.将二进制数据转换回字符串时,需要使用正确的编码:
return Encoding.Unicode.GetString(base64EncodedBytes);
Run Code Online (Sandbox Code Playgroud)
这是假设您无法改变首先生成数据的内容.如果您可以将其更改为使用UTF-8,那么如果文本全部为ASCII字符,则最终会得到一半的数据...