4、字符集、编码、解码、乱码

电脑只认识字节(0,1),人认识的是字符

编码(encode):从字符到字节

public static void main(String[] args) throws UnsupportedEncodingException {
		String msg = "性命生命使命a";
		
		//编码:字节数组
		byte[] datas = msg.getBytes();//默认使用工程的字符集
		System.out.println(datas.length);//utf-8中,中文3个字节,英文1个字节
	
		//编码:其他字符集
		datas = msg.getBytes("UTF-16LE");
		System.out.println(datas.length);//utf-16le中,每一个都是两个字节
		
		datas = msg.getBytes("GBK");
		System.out.println(datas.length);//中文两个字节,英文一个字节
	}

在这里插入图片描述

解码(decode):从字节到字符

public static void main(String[] args) throws UnsupportedEncodingException {
		String msg = "性命生命使命a";
		//编码:字节数组
		byte[] datas = msg.getBytes();//默认使用工程的字符集
		
		//解码:字符串
		msg = new String(datas,0,datas.length,"utf-8");
		System.out.println(msg);
	}

在这里插入图片描述

字符集:就是一本大字典,里面的编号和字符一一对应

常见的字符集:
在这里插入图片描述

乱码问题:解码的时候要知道正确的字符集和字节数,不然可能会导致乱码

1、字节数不够导致的乱码:
2、字符集不统一

public static void main(String[] args) throws UnsupportedEncodingException {
		String msg = "性命生命使命a";
		//编码:字节数组
		byte[] datas = msg.getBytes();//默认使用工程的字符集
		
		//乱码:1、字节数不够
		msg = new String(datas,0,datas.length-2,"utf-8");
		System.out.println(msg);
		msg = new String(datas,0,datas.length-1,"utf-8");
		System.out.println(msg);
		
		//乱码:2、字符集不统一
		msg = new String(datas,0,datas.length,"GBK");
		System.out.println(msg);
	}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的Base64编码解码在处理中文字符时可能会出现乱码的问题。这是因为Base64编码是将二进制数据进行转换成可打印的字符,而在进行Base64解码时,又会将字符转换回二进制数据。在这个过程中,如果编码解码使用的字符集不一致,就会导致出现乱码。 为了解决乱码问题,我们需要在编码解码时使用相同的字符集。在示例代码中,编码解码都使用了UTF-8字符集,这是一种广泛使用的字符集,可以正确地处理中文字符。 如果您在使用Java的Base64编码解码时遇到了乱码问题,可以检查以下几个方面: 1. 确保在编码解码时使用相同的字符集,如UTF-8。 2. 检查待编码的内容和待解码的字符串是否是使用相同的字符集进行转换的。 3. 如果编码解码涉及到文件,确保文件的编码格式正确。 通过以上的检查和确认,您应该能够正确地进行Java的Base64编码解码,避免出现乱码问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Base64编码解码乱码](https://blog.csdn.net/luChenH/article/details/101058615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Java实现BASE64编码解码的方法](https://download.csdn.net/download/weixin_38557980/12791130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值