windows std local不支持utf8引起的日志多语言问题

程序中一直使用chs设置当前编码

std::locale::global(std::locale("chs"));

在中文、英文、法文等多语言切换过程中,一直未发现问题,结果遇到西班牙文中的¡字符就写文件失败了。
可能在以前也有类似问题,但未引起注意。

问题的本质就是windows local不支持utf8,中文时设置为chs,写文件之后,txt文件就确定为chs编码的txt,此时切换为es西班牙文,接着写文件,es编码与chs编码不兼容就写文件失败。
一开始如果写文件都是utf8就没这个问题,但这时需要解决各种编码向utf8转码,且写文件时要用binary方式写char[]。

如果是日志,西班牙用户用了,日志为西班牙文,万一有啥问题要调查,开发人员又看不懂西班牙文,所以日志一般固定为开发人员的母语,或者en。考虑无法排除输出各国语言中的特殊字符,日志模块改为utf8比较合适。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值