今天遇到一个问题,在Unicode工程中用CStdioFile的WriterString方法输出中文时,只输出了英文部分,中午部分被丢弃了。很是郁闷,Debug程序发现到了__wctomb_mt函数中
if ( wchar > 255 ) /* validate high byte */
{
errno = EILSEQ;
return -1;
}
遇到大于0X80就认为结束了,搞不懂微软是怎么个意思。
后来在网上一搜,是有许多人遇到过这个问题。
如:Unicode下用CStdioFile写文件的问题
http://topic.youkuaiyun.com/t/20020605/18/781216.html
CStdioFile类在UNICODE工程中WriteString中文失败的原因
http://blog.vckbase.com/zaboli/archive/2007/04/05/25261.html
后来干脆用CFile了,
USES_CONVERSION;
char* sTem = T2A(s);
file.Write(sTem, strlen(sTem));
file.Write("/r/n", 2);
本文探讨了在Unicode工程中使用CStdioFile的WriteString方法时遇到的中文字符丢失问题。通过分析__wctomb_mt函数行为,找到了问题根源,并提供了一种解决方案,即改用CFile并进行宽字符到多字节转换。
6704

被折叠的 条评论
为什么被折叠?



