wcsftime
Visual Studio CRT附带的实现似乎有一个令人难以置信的错误!据我所知,它只是不支持unicode。
在内部,它转换为单字节(使用当前的单字节代码页),然后调用strftime
,然后返回多字节。真是笑话!如果不比窄版好,他们为什么会发布宽版?
如果我打电话wcsftime(L"ümlaut ş")
,变音符可以工作(因为它包含在Latin-1中),但是s-cedilla则不起作用(它显示为L"ümlaut ?"
)。
我想要做的只是写一个wcsftime
返回UTF-8数据的包装器,但是无论我做什么,我似乎都无法获得Unicode的全部范围wcsftime
(更不用说了strftime
)。
这些功能在CRT中只是从根本上打破了吗?为了使strftime
格式字符串在我的跨平台应用程序中工作,我是否必须交付自己的实现?
这是wcsftime的一个已知问题,您根本不应该使用不是来自所选语言环境的字符来格式化日期和时间。您也可以尝试使用GetDateFormat
/GetTimeFormat
函数,但是我不确定它们是否可以按照您的意愿工作。其他解决方案是在调用wcsftime之前将所有字符编码为十六进制(例如“ş” <->“ @ 015E”),并在调用之后进行解码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句