Esempio n. 1
0
 /// <summary>
 /// Gibt die im <see cref="DataUrl"/> eingebetteten binären Daten zurück oder <c>null</c>,
 /// wenn der <see cref="DataUrl"/> keine eingebetteten binäre Daten enthält oder wenn
 /// diese nicht dekodiert werden konnten.
 /// </summary>
 /// <returns>Die eingebetteten binären Daten oder <c>null</c>.</returns>
 public byte[]? GetEmbeddedBytes()
 {
     try
     {
         return(this.Encoding == DataEncoding.Base64
             ? Base64Parser.ParseBase64(EncodedData)
             : System.Text.Encoding.UTF8.GetBytes(Uri.UnescapeDataString(EncodedData ?? "")));
     }
     catch
     {
         return(null);
     }
 }
Esempio n. 2
0
    /// <summary>
    /// Gibt den im <see cref="DataUrl"/> eingebetteten Text zurück oder <c>null</c>,
    /// wenn der <see cref="DataUrl"/> eingebettete binäre Daten enthält.
    /// </summary>
    /// <returns>Der eingebettete Text oder <c>null</c>.</returns>
    public string?GetEmbeddedText()
    {
        if (!ContainsText)
        {
            return(null);
        }

        if (Encoding == DataEncoding.Base64)
        {
            // als Base64 codierter Text:
            byte[] data;
            try
            {
                data = Base64Parser.ParseBase64(EncodedData);
            }
            catch
            {
                return(null);
            }

            string?charsetValue = MimeType.Parameters?.FirstOrDefault(x => x.Key == "charset").Value;

            int codePage = TextEncodingConverter.GetCodePage(data, out int bomLength);

            Encoding enc = bomLength != 0
                            ? TextEncodingConverter.GetEncoding(codePage)
                            : StringComparer.OrdinalIgnoreCase.Equals(charsetValue, "US-ASCII")
                                ? System.Text.Encoding.UTF8
                                : TextEncodingConverter.GetEncoding(charsetValue);

            try
            {
                return(enc.GetString(data, bomLength, data.Length - bomLength));
            }
            catch
            {
                return(null);
            }
        }
        else
        {
            // Url-Codierter UTF-8-String:
            return(Uri.UnescapeDataString(EncodedData ?? ""));
        }
    }