windows平台的软件用utf16是因为:
1、所有的OS API、CRT函数都有utf16版本,使用方便,起因当然是Windows NT kernel从一开始就是这个设计,上了这个船,船上的后来者也只能先接受现状。
2、在只需要处理英文字母的大小写,而不需要处理utf16的surrogate pair里的大小写时,或者完全不需要考虑surrogate pair时(这种情况下可能主要就支持英文和CJK之类的,不支持那些有surrogate pair的自然语言。只在BMP内),很方便。
所以这个是有前提的。
【 在 yuanmo 的大作中提到: 】
: 同感。
: N年前做过把GB2312编码的项目改成国际版的工作,有几百万行代码要改。最开始尝试了一下utf-16,很快发现完全不可行,因为原来的字符串都是char*和string,要改几万行相关代码变成wchar_t和wstring基本是不可能的,不但工作量大,而且原来的strcpy, strcat,strlen等操作完全失效,都得改成类似wstrcpy, wstrcat之类。就算折腾完了,utf16还是一个变长编码,我这么折腾究竟图啥。
: 然后UTF8有个最大的好处,就是兼容char*。相对来说,下标访问的需求不算强烈,而且也可以通过函数封装。综合看起来UTF8就是最顺眼的。
: ...................
--
修改:z16166 FROM 114.245.255.*
FROM 114.245.255.*