iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >IO流:java中解码和编码出现乱码说明及代码实现
  • 763
分享到

IO流:java中解码和编码出现乱码说明及代码实现

javaIO流解码编码数组GBKUNICODE 2023-10-18 22:10:43 763人浏览 八月长安
摘要

io流:java中解码和编码的代码实现 一、UTF-8和GBK编码方式二、idea和eclipse的默认编码方式三、解码和编码方法四、代码实现编码解码 五、额外知识扩展 一、UTF-8

io流:java中解码和编码的代码实现

一、UTF-8和GBK编码方式

  • 如果采用的是UTF-8的编码方式,那么1个英文字母 占 1个字节,1个中文占3个字节
  • 如果采用GBK的编码方式,那么1个英文字母 占 1个字节,1个中文占2个字节

二、idea和eclipse的默认编码方式

其实idea和eclipse的默认编码方式是不一样的哦。
idea默认的编码方式是:UTF-8
在这里插入图片描述
eclipse默认采用的编码方式是GBK

三、解码和编码方法

1、java中编码的方法

  • public byte[] getBytes() 使用默认的编码方式进行编码
  • public byte[] getBytes(Charset charset) 使用指定方式进行编码

2、java中解码的方法

  • public String(byte bytes[]) 使用默认的方式进行解码
  • public String(byte bytes[], String charsetName) 使用指的方式进行解码

四、代码实现

以下代码demo均采用idea开发

编码

1、使用默认的编码方式进行编码
看下面这段代码,请猜一猜数组中的元素有几个?

package com.heima.demo;import java.util.Arrays;public class TestDemo {    public static void main(String[] args) {        String str = "dk你好";        byte[] bytes = str.getBytes();        System.out.println(Arrays.toString(bytes));    }}

你答对了吗?数组中一共有8个元素,因为idea默认采用的编码方式是utf-8,如果采用的是UTF-8的编码方式,那么1个英文字母 占 1个字节,1个中文占3个字节。我们看一下运行结果

[100, 107, -28, -67, -96, -27, -91, -67]Process finished with exit code 0

如果使用指定的编码方式GBK进行编码呢?我们看一下代码

public class TestDemo {    public static void main(String[] args) throws UnsupportedEncodingException {        String str = "dk你好";        byte[] bytes = str.getBytes("gbk");        System.out.println(Arrays.toString(bytes));    }}

答案是:数组元素一共有6个,因为采用的是GBK编码方式,那么1个英文字母 占 1个字节,1个中文占2个字节。
我们看一下运行结果

[100, 107, -60, -29, -70, -61]Process finished with exit code 0

解码

1、使用默认的方式进行解码

package com.heima.demo;import java.io.UnsupportedEncodingException;public class TestDemo {    public static void main(String[] args) throws UnsupportedEncodingException {        String str = "dk你好";        byte[] byte1 = str.getBytes();        String res1 = new String(byte1);        System.out.println(res1);    }}

运行结果如下:

dk你好Process finished with exit code 0

如果给他加上指定编码方式呢?

package com.heima.demo;import java.io.UnsupportedEncodingException;public class TestDemo {    public static void main(String[] args) throws UnsupportedEncodingException {        String str = "dk你好";        byte[] byte1 = str.getBytes();        String res1 = new String(byte1,"gbk");        System.out.println(res1);    }}

运行结果

dk浣犲ソProcess finished with exit code 0

我们发现有乱码产生。那为什么呢?因为编码的时候,采用的是默认的utf-8方式,所以解码的时候,也需要使用utf-8进行解码,如果使用gbk就会产生乱码。因为utf-8和gbk对中文所占的字节数是不一样的。

  • 如果采用的是UTF-8的编码方式,那么1个英文字母 占 1个字节,1个中文占3个字节
  • 如果采用GBK的编码方式,那么1个英文字母 占 1个字节,1个中文占2个字节

五、额外知识扩展

1、什么是字符集?
字符集顾名思义,就是用来装多个字符的集合。不同的字符集中字符的个数是不同的,包含的字符也是不同的,甚至对于字符的编码格式也是不同的。

2、什么是字符编码?
计算机中存储信息都是以二进制数表示的,而我们在电脑屏幕上看到的文字、数字、英文、标点符号等都是将二进制数转换过后的结果,按照某种规则,将计算机中的二进制数与某个抽象字符集合一一对应,这就是字符编码。

3、ASCII字符集
ASCII 全称 (American Standard Code for InfORMation Interchange)美国信息交换标准代码,它是基于拉丁字母的一套电脑编码系统,其最初在创建的时候主要是为了显示英语以及一些西欧语言,是国际通用的信息交换使用标准码。ASCII使用了7位二进制来表示128个字符和符号,目前已经停止更新。

4、Unicode字符集
ASCII字符集只包含了128个字符,对于全世界的所有语言来说,并不能容纳下世界上所有的语言。所以Unicode字符集出现了。
Unicode又被称为统一码、万国码,是国际组织制定的用来容纳全世界字符的编码方案。是的,确切的说Unicode是一种编码方案,以实现跨语言、跨平台的文本处理、转换的要求。
但是Unicode只是一种字符与二进制数之间的一种逻辑映射编码,它并没有指定在计算集中应该如何的进行存储。所以此时就需要一种编码格式用来指定Unicode字符集中的字符是如何进行编码的。
在Unicode官方资料中,Unicode编码方式有三种:UTF-8、UTF-16、UTF-32,而其中UTF-8编码成为了现今互联网使用较多的编码方式。

5、GB2312
GB2312编码是第一个汉字编码国家标准,于1980年由中国国家标准总局发布。其中共收录了汉字6763个。但是由于我国的汉字非常多,GB2312收录的汉字不够用了,所以GBK诞生了。GBK包含了GB2312的所有内容的同时还新增了20000多新的汉字,对于一些日常需求已经为完全够用了。

来源地址:https://blog.csdn.net/weixin_43860634/article/details/133838023

--结束END--

本文标题: IO流:java中解码和编码出现乱码说明及代码实现

本文链接: https://www.lsjlt.com/news/431773.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • IO流:java中解码和编码出现乱码说明及代码实现
    IO流:java中解码和编码的代码实现 一、UTF-8和GBK编码方式二、idea和eclipse的默认编码方式三、解码和编码方法四、代码实现编码解码 五、额外知识扩展 一、UTF-8...
    99+
    2023-10-18
    java IO流 解码 编码 数组 GBK UNICODE
  • Java中IO流解析及代码实例
    目录I/O简介字节流和字符流常用API字节字符流相关操作字节流读取文本内容字符流读取文本内容字节流读取文件到输出到指定位置字符流读取文件到输出到指定位置缓冲流BufferedInpu...
    99+
    2024-04-02
  • Java IO流 文件的编码实例代码
    •文件的编码package cn.test;import java.io.UnsupportedEncodingException;public class Demo15 { public static void main(S...
    99+
    2023-05-31
    java io 编码
  • Java中IO流解析及代码实例详解
    目录1、IO流1.流和流的分类什么是IO流?IO流的分类?java.io包下需要掌握的流有16个:2.如何使用流1、输入流(读文件):FileInputStream2、输出流(写文件...
    99+
    2024-04-02
  • PHP字符集编码出现乱码怎么解决
    这篇文章主要讲解了“PHP字符集编码出现乱码怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP字符集编码出现乱码怎么解决”吧!要么页面原始汉字和从数据库里取出的汉字全是乱码;要么原...
    99+
    2023-06-17
  • php汉语代码出现乱码的解决方法
    小编给大家分享一下php汉语代码出现乱码的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!解决方法:使用header函数设置页面显示的文字编码,例“header("Content-Type:text/htm...
    99+
    2023-06-08
  • 使用JAVA编程出现乱码如何解决
    在Java编程中出现乱码的问题通常是因为编码不一致导致的。下面是一些常见的解决方法:1. 明确设置编码:在程序中使用`setChar...
    99+
    2023-08-25
    JAVA
  • 解决JavaEE开发中字符编码出现乱码的问题
    网上有很多处理字符编码的解决方案,在此,我站着前人的肩膀上作自己的总结。在我看来,出现乱码问题的解决方法无非就是在3个地方进行编码设置:HTML、JSP等前端页面;后台servlet中request和response对象;服务器配置文件。1...
    99+
    2023-05-31
    字符编码 乱码 javaee
  • Java项目中出现乱码如何解决
    这期内容当中小编将会给大家带来有关Java项目中出现乱码如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文件页面编码导致的乱码。每一个文件(java,js,jsp,html等)都有其本身的编码格式,...
    99+
    2023-05-31
    java ava 目中
  • php中base64解码出现乱码情况怎么办
    小编给大家分享一下php中base64解码出现乱码情况怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php base64解码乱码的解决办法:1、将要解码的字符串中的减号“-”用加号“+”替换;2、将要解码的字符串中的...
    99+
    2023-06-14
  • 详解kubelet 创建pod流程代码图解及日志说明
    目录正文kubernetes调度pod简介kubelet 创建pod代码及图解说明kubelet 简介kubelet创建及启动pod流程kubelet 创建pod代码调用图解kube...
    99+
    2024-04-02
  • C#实现Base64编码与解码及规则
    一、编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位...
    99+
    2024-04-02
  • java运行出现乱码如何解决
    Java运行出现乱码通常是因为编码问题导致的。下面列出几种常见的解决方法:1. 检查源代码中的字符串编码。确保源代码中的字符串编码与...
    99+
    2023-08-31
    java
  • java 实现汉诺塔详解及实现代码
    java 实现汉诺塔详解及实现代码汉诺塔问题:有三根柱子A,B,C,其中A上面有n个圆盘,从上至下圆盘逐渐增大,每次只能移动一个圆盘,并且规定大的圆盘不能叠放在小的圆盘上面,现在想要把A上面的n个圆盘全部都移动到C上面,输出移动的总步数以及...
    99+
    2023-05-31
    java 汉诺塔 ava
  • SpringMVC返回的ResponseEntity出现乱码及解决
    目录返回ResponseEntity乱码问题原因解决ResponseEntity下载文件名中文乱码解决办法问题解决返回ResponseEntity乱码 问题 前台通过数据到后台查询相...
    99+
    2024-04-02
  • java导出pdf(纯代码实现)
    java导出pdf 在项目开发中,产品的需求越来越奇葩啦,开始文件下载都是下载为excel的,做着做着需求竟然变了,要求能导出pdf。导出pdf倒也不是特别大的问题关键就是麻烦。 导出pdf我知道的一共有3中方法: 方法一:利用模板导出,但...
    99+
    2023-08-17
    java pdf 开发语言
  • java 汉诺塔详解及实现代码
    java 汉诺塔详解及实现代码实现效果图打印的方法在 moveTheTopOne() 方法中被调用,调用该方法前打印出移动的方向--从X号塔往Y号塔汉诺塔要求:将第一座塔上的所有盘子,借助第二座塔,全部搬运到第三座塔上。规则:一次只能搬运一...
    99+
    2023-05-31
    汉诺塔 java ava
  • Java实现UTF-8编码与解码方式
    目录Java实现UTF-8编码与解码使用UTF-8或GBK编码后还是乱码的问题两者的区别是总结Java实现UTF-8编码与解码 Java代码如下: import java.net.U...
    99+
    2023-05-15
    Java UTF-8编码 Java UTF-8解码 Java UTF-8
  • Java结合JS实现URL编码与解码
    通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。 例如,Url参数...
    99+
    2024-04-02
  • Java怎么实现UTF-8编码与解码
    这篇文章主要介绍了Java怎么实现UTF-8编码与解码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么实现UTF-8编码与解码文章都会有所收获,下面我们一起来看看吧。Java实现UTF-8编码与解码J...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作