首页 新闻 赞助 找找看

为什么exception没有宽字符版本?还有很多类库也没有,使用wchar_t不是超级麻烦吗?

0
悬赏园豆:5 [已解决问题] 解决于 2016-03-05 00:18

最近因为字符集的问题,搞来搞去总是有一些字符变成?号,想采用wchar_t替换原来的char,但是发现麻烦非常多,最郁闷的是一些类库的参数要求采 用char*,连最平常的exception也不支持wchar_t,望众高手指教啊,用宽字符需要这么麻烦吗??比如那个OTL4,虽然声称支持宽字 符,但是其中对象的参数,如连接字符串,SQL都要求传人char字符串,只是查询结果可以输出Unicode编码而已,这不让人郁闷吗?让函数支持一下 宽字符版本有多难,为什么连OTL4被广泛采用的库都无视宽字符了,难道大家用它的时候都不用宽字符了,或者用宽字符都是将连接字符串,sql等转换 char再用?用宽字符解决乱码不是很好的设想吗?用宽字符调用本来就只支持宽字符的windows api不是很好吗?为什么实现起来那么多麻烦事?真的需要这么麻烦吗??望高手指点迷津,或给个建议!

编程工具:c++.NET2013

Patrickz10的主页 Patrickz10 | 初学一级 | 园豆:7
提问于:2016-01-29 00:17
< >
分享
最佳答案
0

跨平台的话就比较麻烦,宽字符是指的用 2 字节编码一个字符的 UTF-16 编码,其又细分为 UTF-16、UTF-16LE、UTF-16BE,而且在标准 C/C++ 中,是没有 wchar_t 类型的,这只是 VS 编译器自定义的关键字,在别的平台没有,所以绝大多数跨平台开发库不支持 wchar_t 。

收获园豆:5
Launcher | 高人七级 |园豆:45045 | 2016-01-29 09:34

谢谢!

Patrickz10 | 园豆:7 (初学一级) | 2016-03-05 00:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册