【问题标题】:Base64 decoding issue with Android APIAndroid API 的 Base64 解码问题
【发布时间】:2016-03-30 21:35:49
【问题描述】:

我正在尝试解码从 plist(属性列表)文件的 “数据”标签中提取的字符串。从Apple官方开发者网站,我了解到

“数据字节在 标签之间进行 base-64 编码。”

问题:

示例输入:

YnBsaXN0MDDUAQIDBAUILi9UJHRvcFgkb2JqZWN0c1gkdmVyc2lvblkkYXJjaGl2ZXLRBgdUcm9vdIABpwkKERUdIyhVJG51bGzTCwwNDg8QXE5TQXR0cmlidXRlc1hOU1N0cmluZ1YkY2xhc3OABIACgAbSDRITFFlOUy5zdHJpbmeAA1JIadIWFxgcWCRjbGFzc2VzWiRjbGFzc25hbWWjGRobXxAPTlNNdXRhYmxlU3RyaW5nWE5TU3RyaW5nWE5TT2JqZWN0XxAPTlNNdXRhYmxlU3RyaW5n0x4NHyAhIlpOUy5vYmplY3RzV05TLmtleXOggAWg0hYXJCeiJSZcTlNEaWN0aW9uYXJ5WE5TT2JqZWN0XE5TRGljdGlvbmFyedIWFyktoyorLF8QGU5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmdfEBJOU0F0dHJpYnV0ZWRTdHJpbmdYTlNPYmplY3RfEBlOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nEgABhqBfEA9OU0tleWVkQXJjaGl2ZXIACAARABYAHwAoADIANQA6ADwARABKAFEAXgBnAG4AcAByAHQAeQCDAIUAiACNAJYAoQClALcAwADJANsA4gDtAPUA9gD4APkA / gEBAQ4BFwEkASkBLQFJAV4BZwGDAYgAAAAAAAACAQAAAAAAAAAwAAAAAAAAAAAAAAAAAAABmg == P>

在线base64 decoder:生成的输出

bplist00./T$topX$objectsX$versionY$archiverTroot
(U$null

\NSAttributesXNSStringV$class YNS.stringRHiX$classesZ$classname_NSMutableStringXNSStringXNSObject_NSMutableString !”ZNS.objectsWNS.keys$'%&\NSDictionaryXNSObject\NSDictionary)-*+,_NSMutableAttributedString_NSAttributedStringXNSObject_NSMutableAttributedString_NSKeyedArchiver(25:

我的代码生成的输出:

bplist00./T$topX$objectsX$versionY$archiverTroot

这是我解码提取字符串的代码:

String result = new String((Base64.decode(extracted_string.getBytes(“UTF-8"), Base64.DEFAULT)), “UTF-8”));

我尝试过使用 Base64.decode 函数的不同标志,但它们都没有帮助产生与网络工具相同的输出。

我有以下问题:

  1. Android base64 API 是否存在导致上述问题的限制?

  2. 是否有任何可供我使用的替代 Android API?

对于这个问题的任何建议,我将不胜感激。提前谢谢你。

【问题讨论】:

  • 尝试检查变量结果的值。我认为它有 '\n' 所以控制台只显示第一行。
  • 感谢您的回复,但我在控制台上发现了相同的输出,结果可变。

标签: android base64 plist


【解决方案1】:
String result = new String((Base64.decode(extracted_string.getBytes(“UTF-8"), Base64.DEFAULT)), “UTF-8”));

替换为:

 String result = new String(Base64.decode(extracted_string, Base64.DEFAULT));

【讨论】:

  • 感谢您的回复。上面的代码 sn -p 产生相同的结果。
【解决方案2】:

我发布的代码对于解码 base64 编码的字符串是正确的。 Android Studio 控制台没有显示完整的解码字符串(可能是由于显示某些字符的限制)。

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2011-08-03
    • 1970-01-01
    • 2015-07-21
    • 2016-05-05
    • 2011-09-22
    相关资源
    最近更新 更多