我无法相信我无法找到解决这个非常简单问题的方法。我在Objective C中有一个命令行工具,需要在控制台中显示UTF8字符串(带有非英文字符)。我不能使用NSLog,因为它也显示进程信息,PID,时间戳等。 printf不能很好地处理非英文字符。
如何在终端中打印非英文字符,没有任何时间戳?我是否遗漏了一些非常明显的东西,或者这是一个非常简单的任务,在OS X中真的非常重要吗?
我试过了:
printf
:不显示非英文字符。
NSLog
:显示我不想要的PID /时间戳。
DLog
(来自https://stackoverflow.com/a/17311835/811405):不显示非英文字符。
答案 0 :(得分:2)
您尝试使用的macro
取决于CFShow
,它不会打印Unicode字符,只会打印转义码。有关此行为的更多信息here。
所以你可以使用其他东西为macro
而不是CFShow打印到没有任何时间戳的控制台,或者你可以使用我写的NSLog替换库Xcode Logger并使用它的XLog_NH
} logger只打印输出而没有任何其他信息。
答案 1 :(得分:2)
这很好用:
printf("%s\n", [@"Can Poyrazoğlu" UTF8String]);
答案 2 :(得分:1)
使用stdio
:
puts([@"Can Poyrazoğlu" UTF8String]);
使用write
:
const char* example = [@"Can Poyrazoğlu" UTF8String];
write(STDOUT_FILENO, example, strlen(example));