解码Base64字符串不会转换特殊字符

时间:2016-06-09 02:50:35

标签: c# utf-8 decode

我有一个编码为Base64的XML文件,这个文件嵌入了图像。

我的问题是当我尝试解码时:

String sample is here

这是我的代码:

UTF8版本:这个可以被解码并加载到XML中但是特殊的字符不能正确解码(á,é,í,ó,ú,ñ,Ñ)都被解码为< STRONG>?符号

    public XmlDocument GetXmlDocument(string Base64Text)
    {
        string DeCoded = string.Empty;
        XmlDocument Datos = new XmlDocument();
        byte[] Base64 = Convert.FromBase64String(Base64Text);
        DeCoded = Encoding.UTF8.GetString(Base64);
        Datos.LoadXml(DeCoded); 
        return Datos;
    }

UTF7版本:可以对此进行解码,并且可以正确解码特殊字符。如果由于嵌入的图像无法正确解码,则无法将图像加载到XML文档。

    public XmlDocument GetXmlDocument(string Base64Text)
    {
        string DeCoded = string.Empty;
        XmlDocument Datos = new XmlDocument();
        byte[] Base64 = Convert.FromBase64String(Base64Text);
        DeCoded = Encoding.UTF7.GetString(Base64);
        Datos.LoadXml(DeCoded); 
        return Datos;
    }

编辑1:我编码的Base64字符串来自使用的VFP应用程序      VFP Sintax     STRCONV(lcImage,6)

In VFP help it says: 

Converts character expressions between single-byte, double-byte, UNICODE, and locale-specific representations.

6 表示:

6   Converts UNICODE (wide characters) to double-byte characters. 

我正在尝试使用UTF7和UTF8,只是测试可以翻译我的字符串。

我只需要我的原始XML和它在.NET中嵌入的图像,如果这对于标准函数是不可能的,我如何捕获和翻译?符号是可读的字符?

1 个答案:

答案 0 :(得分:2)

从您的XML文档:

<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>

所以,这有效:

DeCoded = Encoding.GetEncoding(1252).GetString(Base64);