Base64 解码带有 ISO-8859-1 字符集的字符串并将其保存到 NSData

Base64 decode a string with ISO-8859-1 charset and save it into NSData

这是我现在的:

documentData = new NSData (document.String, NSDataBase64DecodingOptions.None);

这确实有效,但 NSData 似乎使用 UTF-8 作为输出字符集。但我需要 ISO-8859-1 输出字符集中的数据才能获得正确的解码。默认的 (UTF-8) 失败。

NSData 的选项吗?还是我必须用 C# 转换它?

编辑:

我可以假设 ASCII 是 ISO-8859-1 吗?

public static string Base64Decode(string base64EncodedData) {
    if (String.IsNullOrEmpty (base64EncodedData))
            return null;

    var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
    return System.Text.Encoding.ASCII.GetString(base64EncodedBytes);
}

我相信不会。

我不熟悉 NSData,但是 docs 似乎并不表示您可以这样做。

您可以在 C# 中进行转换,但是:

var isoBytes = Convert.FromBase64String(document.String);
var utf8Bytes = Encoding.Convert(Encoding.GetEncoding("iso-8859-1"),
     Encoding.UTF8, isoBytes);

看来您可以通过工厂方法初始化 NSData

var nsData = NSData.FromArray(utf8Bytes);

或者转换为base64并使用构造函数:

var base64 = Convert.ToBase64String(utf8Bytes);
var nsData = new NSData(base64, NSDataBase64DecodingOptions.None)