0

カスタム ロガーを使用して、テキスト ベースのゲームのコンソール出力をきれいにしようとしています。以下は、問題のメソッドのコードです。

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 関数はローページ文字には問題なく機能しますが、ハイページ文字を印刷しようとすると、単純に行全体がスキップされます。これがなぜなのか誰か知っていますか?

4

1 に答える 1

1

-dataUsingEncoding: への呼び出しで NSNEXTSTEPStringEncoding を使用しています。これは単なる ASCII といくつかの追加です。Unicode をサポートする場合は、NSUTF8StringEncoding などの適切なエンコーディングを使用する必要があります。

于 2012-04-26T04:16:47.237 に答える