在将多字节控制台应用程序转换为Unicode时,我遇到了一个奇怪的问题,其中_tcprintf
和WriteConsole
可以正常工作,但是_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!
答案 0 :(得分:2)
使用_setmode()将文件转换模式设置为[DisplayFormat(ConvertEmptyStringToNull = false)]
public string ItemDesc { get; set; }
:
_O_U16TEXT