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)