Base64使用ISO-8859-1字符集解码string并将其保存到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 ,但文档似乎并没有表明你可以做到这一点。

你可以用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)