开发Windows驱动,建议用Unicode,因为Windows内核里的API绝大多数只提供了Unicode的版本;
开发多语言Windows应用,建议用Unicode,否则会有乱码的问题;
开发跨Windows/Linux平台的库或者应用,建议用UTF-8或者Unicode,具体用哪个,要取决于代码的主要面向平台;
开发Windows网络协议类的应用,建议用Unicode或者UTF-8,因为部分网络协议是UTF-8编码的;
开发跨语言的库,建议使用目标语言的字符集,因为有些语言的字符集转换太难搞了;
如果是几十行几百行的C语言作业,那么用什么都无所谓。
多字节版本的库,主要来源有两个:
1. 老的Windows上的代码改过来了,比如跟VC6一个年代的东西,作者没有动力去更新库。因为毕竟Unicode版本要稍微多一点点东西,老代码写的不规范的话,改起来也不是特别快的。
2. 从Linux上扒拉出来的东西,Linux是UTF-8,但UTF-8跟字节流没什么区别,操作起来也都差不多,UTF-8的代码用来操作多字节字符串看上去似乎是差不多的,而UTF-8到Windows的Unicode是要改代码的,有些人扒拉出来的东西,懒得改了,就成了多字节版本的库了。
说到底,还是开发者懒导致的。
任何应用都要做字符集转换,除非你的代码真的不跨平台,不跨语言。
怕麻烦,怕写代码,又想要支持多平台多语言,这样是不可能做到的。
我觉得应该派解放军去保护我们的自由贸易权力,如果英国人不肯的话就打进白金汉宫,火烧温莎堡