在目标c中将NSData转换为NSString
我想将NSData转换为NSString ..什么是这样做的最好方法?
我正在使用这个代码,但最终的string返回null
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",str);
当我看到控制台它将打印空。
NSString
的文档说
https://developer.apple.com/documentation/foundation/nsstring/1416374-initwithdata
返回值通过使用编码将数据中的字节转换为Unicode字符来初始化的NSString对象。 返回的对象可能与原始接收者不同。 如果由于某种原因初始化失败,则返回nil(例如,如果数据不代表编码的有效数据)。
你应该尝试其他编码来检查它是否解决了你的问题
// 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 };
使用下面的代码。
NSString* myString; myString = [[NSString alloc] initWithData:nsdata encoding:NSASCIIStringEncoding];
-[NSString initWithData:encoding]
如果指定的编码不符合数据的编码, -[NSString initWithData:encoding]
将返回nil
。
确保你的数据是用UTF-8编码的(或者把NSUTF8StringEncoding改成适合数据的任何编码)。
NSString *string = [NSString stringWithUTF8String:[Data bytes]];
-[NSString initWithData:encoding]
是你的朋友,但只有当你使用正确的编码。
目标C:
[[NSString alloc] initWithData:nsdata encoding:NSASCIIStringEncoding];
迅速:
let str = String(data: data, encoding: NSUTF8StringEncoding)
在目标C中:
NSData *tmpData; NSString *tmpString = [NSString stringWithFormat:@"%@", tmpData]; NSLog(tmpString)
迅速:
let jsonString = String(data: jsonData, encoding: .ascii)
或.utf8
或任何适当的编码