这就是我现在所说的:
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);
}
我不相信。
答案 0 :(得分:2)
我不熟悉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)