关于字符编码的说明

常见字符编码有以下几种:

  • ISO-8859-1:属于定长(单字节)编码,只能表示0~255的字符范围(包括标准ASCII和扩展ASCII),主要在英文上应用。
  • GBK/GB2313:属于非定长编码,包含单字节(半角符号)和双字节(全角符号)编码,单字节兼容ASCII,GB2313只有简体汉字,GBK包含简体和繁体汉字,向下兼容GB2313。
  • UNICODE:属于定长(双字节)编码,java中就是使用这种编码方式,英文也使用双字节的编码方式。
  • UTF-8:属于非定长编码,英文部分使用单字节,更节省储存空间。

编码就是指将字符转换成字节的过程,解码就是指将字节转换成字符的过程。字符是通过字节来存储的,通常我们所说的乱码就是往文件中存储字符所用的默认编码方式与解析文件中的字符所用的默认解码方式不同造成的。

解决办法就是生成文件时以特定编码方式来存储字符或读取文件时以特定解码方式来读取字符:

存储字符:

//生成字符串s后,以UTF-8的编码方式来获取编码,而非用本机默认的方式来编码
byte[] bytes = s.getBytes("UTF-8");

//默认使用本机的编码方式:
byte[] bytes = s.getBytes();

读取字符:

//从文件中读取byte[] bytes后,以之前生成此文件的编码方式解码,而非使用本机默认的解码方式
String s = new String(bytes,"UTF-8");

//默认是用本机的解码方式:
String s = new String(bytes);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值