2012-04-26 38 views
0

我正在嘗試使用自定義記錄器爲基於文本的遊戲提供乾淨的控制檯輸出。下面是該方法的問題代碼:自定義日誌記錄方法MyLog不適用於Objective-C中的高頁面字符

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函數可以正常工作,但是當它嘗試打印高頁面字符時,它會簡單地跳過整行。有人知道爲什麼嗎?

回答

1

在調用-dataUsingEncoding:時,您正在使用NSNEXTSTEPStringEncoding,這只是ASCII加上一些附加內容。如果你想支持Unicode,你應該使用適當的編碼,如NSUTF8StringEncoding。

+0

非常感謝! – Supuhstar 2012-04-26 04:25:47