跨平台编码问题
weiym 2012-10-21 09:48:47 windows上一般用多字节(MBCS)或Unicode16, 但是Linux, Mac, ios一般都是用UTF8,跨平台编码时怎么解决这个问题?
a. 用宏定义(UTF8, Unicode16, MBCS),根据定义的宏选择编码方式。
评价:感觉不太现实,太复杂。
b. 根据宏定义,Windows上统一用Unicode16,其他平台统一用UTF8。
评价:代码中充满了判断平台相关的代码,不好编码和维护。
c. 统一用UTF8。
评价:对于类似char* p = "好Hello"这样的代码,Linux上可以直接编译成UTF8,Windows上VC却做不到。当然C++11里用u8"好Hello"这样来实现,但是并不是所有编译器都支持C++11。
VC编译器只支持MBCS或是Unicode16,UTF8是不是意味着我们只能选择MBCS设置? 另外,统一用UTF8意味着windows上的API调用时都要转换。
当然,跨平台开发时,平台相关的东西我们首先要剥离封装出来,然后统一传入字符串都是UTF8类型的。
不知道一般跨平台的程序是怎么解决这个问题的,希望有相关经验的朋友指教。