如何解码包含包含拉丁字母(á,é,í,ó,ú)
的XML文档的base64编码字符串?
我知道这个问题How do I encode and decode a base64 string? 但是所提供的解决方案对于带有重音的字母效果不佳。
到目前为止,我已经尝试过:
xmlBase64 = System.Text.Encoding.ASCII.GetString(System.Convert.FromBase64String(XmlDoc));
xmlBase64 = System.Text.Encoding.Unicode.GetString(System.Convert.FromBase64String(XmlDoc));
xmlBase64 = System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(XmlDoc));
xmlBase64 = System.Text.Encoding.UTF32.GetString(System.Convert.FromBase64String(XmlDoc));
但在所有情况下,拉丁字母(西班牙字母)都会被?
或类似物替换。
编辑:
答案 0 :(得分:2)
查看System.Convert.FromBase64String(XmlDoc)
生成的字节非常有用。
我已经这样做了,看看原始字符串中的“metálicas”这个词(这只是我发现的第一个带有重音的词)。字符串的这一部分将转换为字节数组6D 65 74 E1 6C 69 63 61 73
。
从该字节数组中可以很容易地看到两件事:
从那里我猜测它将是某种形式的扩展ASCII,Windows-1252似乎有效。请尝试以下方法:
xmlBase64 = System.Text.Encoding.GetEncoding(1252).GetString(System.Convert.FromBase64String(XmlDoc));