[英]ObjC Base64 Decode returns nil
我正在尝试解码Base64编码的字符串,并且在使用UTF8编码时始终返回nil。 我尝试将字符编码更改为几个不同的选项,但无法将其返回与将其放入网站时相同的值: https : //www.base64decode.org/
我要解码的字符串是“ qc6mSDfm1pizbp0szoQmoQ ==”
这是我用来测试的代码
// DataHelper.m
+(NSString*) base64Encode:(NSString*) string andEncoding:(NSStringEncoding) encoding {
NSData *plainData = [string dataUsingEncoding:encoding];
return [plainData base64EncodedStringWithOptions:kNilOptions];
}
+(NSString*) base64Decode:(NSString*) string andEncoding:(NSStringEncoding) encoding {
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:string options:kNilOptions];
NSString *str = [[NSString alloc] initWithData:decodedData encoding:encoding];
return str;
}
// TestCases.m
-(void) testDecodeEncodeNonce {
NSString *nonce = @"qc6mSDfm1pizbp0szoQmoQ==";
NSString *decoded = [DataHelper base64Decode:nonce andEncoding:NSUTF8StringEncoding];
NSString *encoded = [DataHelper base64Encode:decoded andEncoding:NSUTF8StringEncoding];
XCTAssertEqualObjects(nonce, encoded);
}
您的代码工作正常(尝试: Y2hlY2sgaXQgb3V0IG15IGVuY29kZWQgc3RyaW5nLg==
)。 您的问题不是代码,而是编码的字符。 您已经以某种方式编码了initWithBase64EncodedString
无法在NSUTF8StringEncoding
解码的特殊字符, NSUTF8StringEncoding
使用NSASCIIStringEncoding
代替它。
希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.