Windows unicode控制台应用程序使用哪种语言环境LC_CTYPE?

时间:2018-11-09 06:22:29

标签: c utf-16 windows-console

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

我已经追溯到使用setlocale(LC_ALL, "C"),它根据MS doc使用1字节的LC_CTYPE

  

C语言环境假定所有char数据类型均为1字节,并且其值始终小于256。

但是,我想保留"C"以外的所有内容LC_CTYPE,但我不知道该怎么用?

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

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

无论如何,有人知道Windows Unicode控制台应用程序上的UTF16使用LC_CTYPE应该具有什么价值吗?也许和setlocale( LC_CTYPE, "" );一样容易? TIA!

1 个答案:

答案 0 :(得分:2)

使用_setmode()将文件转换模式设置为[DisplayFormat(ConvertEmptyStringToNull = false)] public string ItemDesc { get; set; }

_O_U16TEXT