C++ wofstream类

本文探讨了使用wofstream类写入Unicode字符时遇到的问题,即该类内部自动将Unicode字符转换为GBK编码,导致无法直接保存原始Unicode数据。文章建议使用fstream类并在文件开头插入UTF-8 BOM (0xFEFF),以实现Unicode字符的正确存储。

这个类在使用时必须调用imbue函数进行环境设置,但是由于其自动将内部字节序转为环境的编码(中国为GBK),所以用这个往文件输入unicode字符目前没什么办法。

今天做了一个测试,我写的的字节序是0x76EE,0x5F55,0x0000,写进然后用ultraedit看发现字节序是0xBFC4,0xBCC2,用转码工具(unicode转gbk)将0x76EE,0x5F55进行转换,发现刚好是0xBFC4,0xBCC2,所以wofstream内部将unicode进行存的时候会先进行一次转码。

所以要想存取unicode字符不如用fstream类,在前面写入0xFEFF就可以了。写下这个以防自己以后忘记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值