Search code examples
iphoneobjective-ciosipad

Converting NSData to NSString in Objective c


I want to convert NSData to NSString..What is the best way to do this?

I am using this code but the final string returns null

NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);

When I see console It will print null.


Solution

  • The docs for NSString says

    https://developer.apple.com/documentation/foundation/nsstring/1416374-initwithdata

    Return Value An NSString object initialized by converting the bytes in data into Unicode characters using encoding. The returned object may be different from the original receiver. Returns nil if the initialization fails for some reason (for example if data does not represent valid data for encoding).

    You should try other encoding to check if it solves your problem

     // The following constants are provided by NSString as possible string encodings.
    enum {
       NSASCIIStringEncoding = 1,
       NSNEXTSTEPStringEncoding = 2,
       NSJapaneseEUCStringEncoding = 3,
       NSUTF8StringEncoding = 4,
       NSISOLatin1StringEncoding = 5,
       NSSymbolStringEncoding = 6,
       NSNonLossyASCIIStringEncoding = 7,
       NSShiftJISStringEncoding = 8,
       NSISOLatin2StringEncoding = 9,
       NSUnicodeStringEncoding = 10,
       NSWindowsCP1251StringEncoding = 11,
       NSWindowsCP1252StringEncoding = 12,
       NSWindowsCP1253StringEncoding = 13,
       NSWindowsCP1254StringEncoding = 14,
       NSWindowsCP1250StringEncoding = 15,
       NSISO2022JPStringEncoding = 21,
       NSMacOSRomanStringEncoding = 30,
       NSUTF16StringEncoding = NSUnicodeStringEncoding,
       NSUTF16BigEndianStringEncoding = 0x90000100,
       NSUTF16LittleEndianStringEncoding = 0x94000100,
       NSUTF32StringEncoding = 0x8c000100,
       NSUTF32BigEndianStringEncoding = 0x98000100,
       NSUTF32LittleEndianStringEncoding = 0x9c000100,
       NSProprietaryStringEncoding = 65536
    };