簡體   English   中英

ObjC Base64 Decode返回nil

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM