C++、python2、python3、GO语言字符串编码介绍

C++/C:char* 或者string在内存中的编码方式是更具文件的编码格式而定的,会根据文件的编码直接读入字符串,显示的时候按照控制台的格式来显示,如果控制台不支持一些格式,那么就会乱码。

python2:python文件头规定的编码格式 # -*- coding: utf-8 -*-,解释器会根据这个编码读取字符串,如果没有指定,默认以asc编码读取,字符串在内存中的编码方式是utf-8的方式,显示的时候会自动转换成unicode编码的格式。

python2中的decode("utf-8")是将utf-8的编码格式转换成unicode编码格式

python3中解释器默认的读取文件的编码格式是utf-8,当然也可以自己指定编码,python3中字符串在内存中的存储的形式是unicode编码,如果需要存储到文件需要进行编码成utf-8,encode("utf-8"),也可以存储成unicode编码,但是文件中会乱码。

需要说明一下,utf-8和unicode是两种不同的编码方式,utf-8显示的时候需要转换成unicode,然后在unicode表中查询对应的符号,unicode占2个字节(不管哪种语言),utf-8是不定长,单字节编码。由于unicode占用两个字节,所以转换成unicode的中文可以用len求出长度,如果是utf-8的话是不定长的,只能求出占用的字节数。

python3中严格区分了字节和字符串,或者说只有字节和unicode的编码。

GO:GO字符串在内存中采用utf-8的编码格式存储,这个和python2很像。所以GO语言直接读取utf-8的文件就很好处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值