在解决jni调用出现mp3 tag乱码中的要点:setlocale

上篇说:


若ASCII码直接转换: 

        result=(env)->NewStringUTF(str );
    
 若含有中文字符:  
        int length = mbstowcs(wchar_t *wcstr,const char *mbstr,size_t count);

这个函数的第三个参数count,大小一定要是mbstr长度的2倍,否则出来的中文也会是乱码


mbstowcs的使用是需要正确设置locale的。简简单单写setlocale(LC_ALL,"");是否可以使当前语言环境支持所有编码的字符呢?


linux下一般的 locale "zh_CN.UTF-8"


UTF-8 是编码,en_US.UTF-8、zh_CN.UTF-8叫做字符集,就是说‘A’、‘B’、‘中’、‘国’等对应的整数值,en_US 和 zh_CN 也是语言环境
en_US.UTF-8 和 zh_CN.UTF-8 包含的字符数量是基本上一样的,大概是七万个汉字,编码都是 UTF-8 编码,字符集是 Unicode,zh_CN.GB18030 和 zh_CN.GBK 的字符集都与 Unicode 3 是等价的
语言环境的差别就是另一回事了,中国人和外国人表示时间啦,数字啦,习惯都不一样,所以必须区分开。

大部分程序根据语言环境变量来选择界面的语言是中文还是英文。

 

下面是console上的一些输出   > > > > > >
我查看已经安装的语言包:
#   locale   -a


查看当前的设置:
#   locale


修改设置:
#   export   LC_ALL=ZH_CN.UTF-8

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值