编码解码乱码字符集[通俗易懂]

编码解码乱码字符集[通俗易懂]编码EnCode:将字符转化为字节解码DeCode:将字节转化为字符乱码:打个比方—比较多人知道的联通用字符集GBK的时候出现这样的情况:��ͨ,这就是乱码常见的中文字符集有:GBK和UTF-8国际上常用的字符集:Unicode(大字典)、ANSI UTF-8,中文占三个字节,英文占一个字节(变长),还有定长占两个字节(耗费空间多)GBK,中文占两个zijie…

大家好,又见面了,我是你们的朋友全栈君。

编码EnCode:将字符转化为字节

解码DeCode:将字节转化为字符

乱码:打个比方—比较多人知道的联通 用字符集GBK的时候出现这样的情况:��ͨ,这就是乱码

常见的中文字符集有:GBK 和 UTF-8

国际上常用的字符集:Unicode(大字典)、ANSI

 

UTF-8,中文占三个字节,英文占一个字节(变长),还有定长占两个字节(耗费空间多)

GBK,中文占两个zijie

 

下面模拟编码:

我的默认的编码字符集为:

编码解码乱码字符集[通俗易懂]

import java.io.UnsupportedEncodingException;

/**
 * 编码:将字符转化为字节
 * @author Administrator
 *
 */
public class MyEnCode {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String msg = "性命生命使命a";
		
		//默认字符集编码,这里默认为GBK
		byte[] datas = msg.getBytes();
		System.out.println(datas.length);
		
		//使用不同字符集编码,如UTF-8
		datas = msg.getBytes("UTF-8");
		System.out.println(datas.length);
	}
}

 结果显示:

13
19

说明:不同的字符集得到的字节数是不一样的

 

下面模拟解码的情况:

import java.io.UnsupportedEncodingException;

/**
 * 编码:将字符转化为字节
 * 解码:将字节转化为字符
 * @author Administrator
 *
 */
public class MyDeCode {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String msg = "性命生命使命a";
		//编码
		byte[] datas = msg.getBytes();
		
		//解码
		msg = new String(datas,0,datas.length,"GBK");
		System.out.println(msg);
		
		//乱码:
		//(1)字节数不够
		msg = new String(datas,0,datas.length-2,"GBK");
		System.out.println(msg);
		
		msg = new String(datas,0,datas.length-1,"GBK");
		System.out.println(msg);
		
		//(2)没有使用和默认一样的字符集
		msg = new String(datas,0,datas.length-1,"UTF-8");
		System.out.println(msg);
	}
}

 结果:

性命生命使命a
性命生命使?
性命生命使命
???????????

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138745.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue路由传参的两种方式的区别_vue路由跳转获取参数

    vue路由传参的两种方式的区别_vue路由跳转获取参数vue路由传参的两种方式

    2025年5月23日
    4
  • qxdm使用教程_log命令

    qxdm使用教程_log命令(一)、首先保证PC机和手机串口(或并口)之间连接畅通,这个可以从QXDM工具的系统栏看出,如果是MSM6000的项目,系统栏会显示“COMX:SURF6000-ZRF6000”;如果是MSM6025的项目,系统栏会显示“COMX:SURF6025-ZRF6025”。其中X为某个串口,比如COM1,X=1等。(二)、QXDM打开后,先配置好messageview要打印的信息,具体的配置如

    2022年10月2日
    3
  • 小米笔记本、小米游戏本重装原装出厂镜像教程-有百度盘的提取码

    小米笔记本、小米游戏本重装原装出厂镜像教程-有百度盘的提取码转:【新的干货儿】小米笔记本、小米游戏本重装原装出厂镜像教程原文转自:http://bbs.xiaomi.cn/t-36117135作者主页:http://bbs.xiaomi.cn/u-detail-426023643转载仅供学习,感谢原作者分享。【重装前须知】有百度盘的提取码1.本教程完全为个人观点,不代表官方,仅供参考。2.重装系统需谨慎,由此带来的任何问题与本人无…

    2022年6月27日
    300
  • git的使用步骤_git版本控制

    git的使用步骤_git版本控制git基本使用步骤git工作区、暂存区和本地仓库理解:https://blog.csdn.net/qq_39588003/article/details/106991551目录git基本使用步骤一、安装git二、配置git三、初始化本地仓库四、将当前目录的文件纳入版本控制五、查看仓库当前文件提交状态一、安装git在网上下载git,并安装安装完成后,如下图:右键鼠标会有GitGUIHere和GitBashHere二、配置git在git.

    2022年9月22日
    4
  • 一看就懂的 startActivityForResult(Intent intent, int requestCode)[通俗易懂]

    一看就懂的 startActivityForResult(Intent intent, int requestCode)[通俗易懂]  关于startActivityForResultstartActivityForResult(Intentintent,intrequestCode)老是遗忘尤其其中的几个参数。老是傻傻分不清。所以今天就简单的记录下来   startActivityForResultstartActivityForResult(Intentintent,intrequestCode)。…

    2022年7月11日
    18
  • redisson锁 tryLock的使用及正确用法

    redisson锁 tryLock的使用及正确用法方式一RLocklock=redissonClient.getLock(“Export:create:”+Context.get().getCorpId());try{if(lock.tryLock(5,10,TimeUnit.SECONDS)){//业务处理}else{Assert.isTrue(false,”排队中,请稍后重试!”);}}catch(InterruptedExceptione){.

    2022年8月31日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号