java编码的系统_JAVA编码机制

java中所有都是unicode的编码,恐怕大家都清楚,但是这具体是哪里的编码。在一台中文windows操作系统(GBK),或英文的linux操作系统下(ISO-8859-1)下,这些编码是如何转换的。JAVA中的String类的getBytes()方法和String类的指定编码方式的构造函数中的编码又是如何呢?

这里我不做深入解释,只是展示一下这些编码转换的流程。

以windows中文操作系统为例,我们编写好的java文件以默认本地操作系统的编码方式进行存储(java源文件和class文件),即GBK。

当jvm需要载入相应的类时,jvm将GBK编码的字符转换为unicode字节码,即jvm中的字节码是unicode的。

以上两个过程实际上不需要我们参与,因此对于任何平台,我们所要操作的目标都是unicode编码的字符串。

byte[] getBytes(code)

这个方法是将unicode字符串按照code指定的编码方式转换为字节数组,这里会出现转码问题,如unicode-->iso-8859-1。如果是ASCII的字符,则不会有问题,但是如果出现汉字的unicode,则得到的iso编码必然是?(63)

String(byte[],code)

按照code指定的解码方式,将byte[]字节组解码为对应编码方式的字符串。

Internet上传递的字节流的编码都是ISO-8859-1的,因此要想恢复到之前的汉字字符串需要按照以下步骤:

String string = in.readLine();

byte[] b = string.getBytes("iso-8859-1");

new String(b,"gbk");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值