Base64编码德code。与ISO-8859-1字符集的字符串,并将其保存到NSData的 [英] Base64 decode a string with ISO-8859-1 charset and save it into NSData

查看:1654
本文介绍了Base64编码德code。与ISO-8859-1字符集的字符串,并将其保存到NSData的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我现在已经:

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

这不工作,但似乎是NSData的使用UTF-8作为输出的字符集。但我需要在ISO 8859的输出字符集的数据,以获得正确的解码。默认的(UTF-8)失败。

This does work, but it seems that NSData is using UTF-8 as output charset. But I need the data in ISO-8859-1 output charset to get the correct decoding. The default one (UTF-8) fails.

是否有一个选项的NSData 还是必须将其与C#转换?

Is there an option for NSData or do I have to convert it with C#?

编辑:

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

Can I assume that ASCII is 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 ,而文档似乎没有指示就可以做到这一点。

I'm not familiar with NSData, but the docs don't seem to indicate you can do this.

您可以用C#转换,虽然:

You can convert in C#, though:

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和使用构造函数:

Or convert it to base64 and use the constructor:

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

这篇关于Base64编码德code。与ISO-8859-1字符集的字符串,并将其保存到NSData的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆