如何在OS X终端中显示UTF8字符串

时间:2015-08-08 11:01:10

标签: objective-c macos utf-8 printf nslog

我无法相信我无法找到解决这个非常简单问题的方法。我在Objective C中有一个命令行工具,需要在控制台中显示UTF8字符串(带有非英文字符)。我不能使用NSLog,因为它也显示进程信息,PID,时间戳等。 printf不能很好地处理非英文字符。

如何在终端中打印非英文字符,没有任何时间戳?我是否遗漏了一些非常明显的东西,或者这是一个非常简单的任务,在OS X中真的非常重要吗?

我试过了:

printf:不显示非英文字符。

NSLog:显示我不想要的PID /时间戳。

DLog(来自https://stackoverflow.com/a/17311835/811405):不显示非英文字符。

3 个答案:

答案 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));