c - printf() 是否关心语言环境?

标签 c linux gcc

wprintf()wchar_t 字符串作为参数并以指定的语言环境字符编码打印该字符串。

但我注意到,当使用 printf() 并向其传递一个 UTF-8 字符串时,无论指定的语言环境字符编码如何(例如,如果UTF-8 字符串包含阿拉伯字符,并且语言环境设置为“C”(不是“C.UTF-8”),则仍将打印阿拉伯字符。

printf() 不关心语言环境,我说得对吗?

最佳答案

True printf 不关心 C 字符串的语言环境。如果您向它传递一个 UTF-8 字符串,它对此一无所知,它只会看到一个字节序列(希望以 ascii NUL 结尾)。然后,字节按原样传递到输出,并由终端解释(或任何输出)。如果终端能够解释 UTF-8 序列,它就会这样做(如果不能,它会尝试按照配置的方式解释它,Latin-1 或类似的),如果它也能够正确打印它们,那么它就会这样做(有时它没有正确的字体/字形并将未知字符打印为 ? 或类似字符)。

关于c - printf() 是否关心语言环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50683104/

相关文章:

c - 嵌入式 C 数组索引文字与变量问题

c - Windows 物理驱动器访问 fopen 和 fseek

linux - Bash 函数在文档顶部定义时执行?

c - 如何在没有段错误的情况下打印给定内存地址中的值?

c++ - nohup 和 std::ignore() 不能一起工作

c - 以下相关循环的时间复杂度是多少?

c - 想知道 C 字符串、NULL、空格

gcc - 为什么 gcc 不会编译未初始化的全局常量?

c++ - 将 Weak ISR Handler 从 Assembly 覆盖到 C++ 不会编译任何代码

C程序警告: format not a string literal and no format arguments