转自:http://hi.baidu.com/ark803/blog/item/ea0c461b8e0f28d0ac6e7577.html [在此向原文作者说声谢谢!若有读者看到文章转载时请写该转载地址,不要写我的BLOG地址。尊重他人的劳动成果 ^_^ ]
今天遇到个编码转换的问题,需要把unicode编码转换为多字节(这里是GB),对函数wcstombs()的使用总是出问题,想起sunshine师兄写的关于多字节转unicode时对函数mbstowcs()的使用(wcstombs()函数的兄弟~),所以决定找unicode的代码页,但是只找到了UTF7和UTF8的代码页,无奈之下只好搜网上对wcstombs的使用了,发现wcstombs和mbstowcs的使用并不完全一样,在unicode到多字符的转换过程中,需要指明多字符的代码页,并不像我原来想的那样"需要指明前面一个一个字符集的代码页"。
使用如下:(unicode 到GB)
setlocale(LC_ALL, ".936");
wcstombs(char * to,wchar_t * from,size_t _maxCount);//
后来想想,多字节有很多种,而宽字节只有unicode,所以不论是从"宽"到"多"还是从"多"到"宽",需要指明的都是"多"。