Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义日志记录方法MyLog不适用于Objective-C中的高页字符_Objective C_Console_Text Based_Console Output - Fatal编程技术网

自定义日志记录方法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