如何在 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));
我不敢相信我找不到解决这个非常简单的问题的方法。我在 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));