自定义日志记录方法MyLog不适用于Objective-C中的高页字符
我正在尝试使用一个自定义的记录器为基于文本的游戏提供干净的控制台输出。以下是有关方法的代码:自定义日志记录方法MyLog不适用于Objective-C中的高页字符,objective-c,console,text-based,console-output,Objective C,Console,Text Based,Console Output,我正在尝试使用一个自定义的记录器为基于文本的游戏提供干净的控制台输出。以下是有关方法的代码: void MyLog(NSString *format, ...) { va_list args; va_start(args, format); NSString *formattedString = [[NSString alloc] initWithFormat:format arguments: args]; va_end(args); [[NSFileH
void MyLog(NSString *format, ...)
{
va_list args;
va_start(args, format);
NSString *formattedString = [[NSString alloc] initWithFormat:format arguments: args];
va_end(args);
[[NSFileHandle fileHandleWithStandardOutput] writeData:[formattedString dataUsingEncoding: NSNEXTSTEPStringEncoding]];
[formattedString release];
}
下面是这个例子的用法:
NSLog(@"Unicode text: \u2665");
NSLog(@"ASCII Text");
MyLog(@"Unicode text: \u2665");
MyLog(@"ASCII text");
以及输出:
2012-04-26 00:08:53.614 TextCraft[11319:a0f] Unicode text: ♥
2012-04-26 00:08:53.617 TextCraft[11319:a0f] ASCII Text
ASCII text
正如您所看到的,MyLog函数对于低页字符工作良好,但是当它试图打印高页字符时,它只是跳过整行。有人知道这是为什么吗?您在调用-dataUsingEncoding:时使用了NSNEXTSTEPStringEncoding,这只是ASCII加上一些附加内容。如果希望支持Unicode,则应使用适当的编码,如NSUTF8StringEncoding