gpt4 book ai didi

c - Windows unicode 控制台应用程序使用什么语言环境 LC_CTYPE?

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:01 24 4
gpt4 key购买 nike

在将多字节控制台应用程序转换为 Unicode 时,我遇到了一个奇怪的问题,其中 _tcprintfWriteConsole 工作正常,但 _tprintf正在打印错误的字符...

我已经追溯到使用 setlocale(LC_ALL, "C"),它使用基于 MS 文档的 1 字节的 LC_CTYPE:

The C locale assumes that all char data types are 1 byte and that their value is always less than 256.

但是,我想为除 LC_CTYPE 之外的所有内容保留 “C”,但我不知道该使用什么?

我认为使用 UTF16 的全部意义在于所有字符都可用,并且无论代码页或区域设置如何,都可以正确打印。

尽管在 Unicode 应用程序中将控制台输出设置为 UTF-8 (65001)(SetConsoleCP 当然与语言环境是分开的)并且输出 UTF16 也出现显示正确字符的问题.

无论如何,有人知道我应该为 Windows Unicode 控制台应用程序上的 UTF16 使用 LC_CTYPE 什么值吗?也许就像 setlocale( LC_CTYPE, ""); 一样简单? TIA!!

最佳答案

使用_setmode()将文件翻译模式设置为 _O_U16TEXT:

#include <fcntl.h>
#include <io.h>
#include <stdio.h>

int main(void)
{
_setmode(_fileno(stdout), _O_U16TEXT);
wprintf(L"ελληνικά\n");
}

关于c - Windows unicode 控制台应用程序使用什么语言环境 LC_CTYPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53220783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com