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

How to display UTF8 string in OS X Terminal

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

如何在没有任何时间戳的情况下在终端中打印非英语字符?我在这里错过了一些非常明显的东西,还是这样一个非常简单的任务在 OS X 中真的很重要?

我试过:

printf: 不显示非英文字符。

NSLog:显示 PID/timestamp,这是我不想要的。

DLog(来自):不显示非英文字符。

您尝试使用的 macro 取决于 CFShow,它不打印 Unicode 字符,只打印它们的转义码。有关此行为的更多信息 here

所以你可以为你的 macro 使用其他东西而不是 CFShow 来打印到没有任何时间戳的控制台,或者你可以使用我写的 NSLog 替换库,Xcode Logger 并使用它的 XLog_NH 只打印输出而没有任何其他信息的记录器。

这很好用:

printf("%s\n", [@"Can Poyrazoğlu" UTF8String]);

使用stdio:

puts([@"Can Poyrazoğlu" UTF8String]);

使用write:

const char* example = [@"Can Poyrazoğlu" UTF8String];
write(STDOUT_FILENO, example, strlen(example));