java特殊字符乱码,Java出现乱码

  java特殊字符乱码,Java出现乱码

  原因:

  编解码不一致导致字符乱码。

  首先我们可以通过调用Java . nio . charset . charset . default charset()得到系统的默认字符集。中文Windows系统都是GBK,所以JVM默认使用GBK字符集编解码。

  相关视频学习教程:java教学视频

  乱码最大的可能是编解码不一致。

  //代码片段1:

  Byte[] read=你好abc 。getBytes();

  字符串结果=新字符串(读取);

  System.out.println(结果);此上诉代码有三个步骤:

  1.编码。这里是这样写的,让它看起来更简洁。其实和你从文件/网络等其他介质上读取也是一样的。原始输入流是什么类型的编码,读取后是什么类型的编码。这里没有指定编码方法,所以默认为GBK。

  2.解码。我们最后的操作都是字符串对象,通过指定字符串对字节数组的解码方法,最终可以得到一个字符串对象。这里没有指定解码方法,所以默认为GBK。

  3.输出和使用字符串。其实这里还有另外一个编解码过程,就是输出流编码为GBK,控制台解码为GBK,最后显示出来。因为字符串的输出和使用都是基于系统的默认字符集,不存在编解码不一致的可能,所以这不是乱码的来源。

  假设我们改变输入流的编码:

  //代码片段2:

  Byte[] read=你好abc 。getBytes( utf-8 );

  字符串结果=新字符串(读取);

  System.out.println(结果);我们再来分析一下这三个步骤:

  1.编码,UTF-8;

  2.解码,gbk。

  不一致的编码和解码在这里导致乱码。

  至于怎么修,相信已经很清楚了。

  修复方法如下:

  //代码片段3:

  Byte[] read=你好abc 。getBytes( utf-8 );

  String result=新字符串(read, utf-8 );

  System.out.println(结果);只需更改解码模式以对应编码即可。

  小结:

  1.一般我们很难控制输入流是什么编码,所以解码的时候要注意输入流的编码类型。一般我们调用输入流的相关方法时,看到的是charset参数,指的是解码方法。

  2.也可以操作输出流的编码方法。如果以后用输入流操作输出结果,比如文件,只要都是默认方式执行,就不会出现乱码。通常,当我们调用输出流的相关方法时,我们会看到charset参数,它指的是编码方法。

  推荐文章教程:java入门教程以上是java中乱码的详细内容。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: