Tag: printf

打印Cstring(UTF-8)时NSLog()vs printf()

我注意到,如果我尝试使用格式说明符“%s”打印包含UTF-8string表示forms的字节数组, printf()会正确,但是NSLog()会将其乱码(即每个字节按照原样打印,例如“¥”打印为2个字符:“¬•”)。 这很好奇,因为我总是认为NSLog()只是printf() ,加上: 第一个参数('格式')是一个Objective-Cstring,而不是Cstring(因此是“@”)。 时间戳和应用程序名称预先。 换行符自动添加到最后。 打印Objective-C对象的能力(使用格式“%@”)。 我的代码: NSString* string; // (…fill string with unicode string…) const char* stringBytes = [string cStringUsingEncoding:NSUTF8Encoding]; NSUInteger stringByteLength = [string lengthOfBytesUsingEncoding:NSUTF8Encoding]; stringByteLength += 1; // add room for '\0' terminator char* buffer = calloc(sizeof(char), stringByteLength); memcpy(buffer, stringBytes, stringByteLength); NSLog(@"Buffer after copy: %s", buffer); // (renders ascii, no matter […]