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)
这是我现在的:
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)