简体   繁体   English

ObjC Base64 Decode返回nil

[英]ObjC Base64 Decode returns nil

I'm trying to decode a Base64 encoded string and it always returns nil when using the UTF8 encoding. 我正在尝试解码Base64编码的字符串,并且在使用UTF8编码时始终返回nil。 I've tried changing the character encoding to several different options and can't get it to return the same value as when I put it into a website like: https://www.base64decode.org/ 我尝试将字符编码更改为几个不同的选项,但无法将其返回与将其放入网站时相同的值: https : //www.base64decode.org/

The string I'm trying to decode is "qc6mSDfm1pizbp0szoQmoQ==" 我要解码的字符串是“ qc6mSDfm1pizbp0szoQmoQ ==”

Here is the code I'm using to test this 这是我用来测试的代码

// 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);
}

Your code works fine (try this: Y2hlY2sgaXQgb3V0IG15IGVuY29kZWQgc3RyaW5nLg== ). 您的代码工作正常(尝试: Y2hlY2sgaXQgb3V0IG15IGVuY29kZWQgc3RyaW5nLg== )。 Your problem is not the code, but the characters you encoded. 您的问题不是代码,而是编码的字符。 Somehow you have encoded special characters that initWithBase64EncodedString is not able to decode in NSUTF8StringEncoding use NSASCIIStringEncoding instead of it. 您已经以某种方式编码了initWithBase64EncodedString无法在NSUTF8StringEncoding解码的特殊字符, NSUTF8StringEncoding使用NSASCIIStringEncoding代替它。

I hope this can help you. 希望对您有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM