Java字符串中字符的Unicode码点、编码

以前对于Java字符串中字符的Unicode码点、UTF编码没有仔细研究。今天研究了下。
Unicode是一个字符集,其实是一个映射,给每个字符映射了一个数值,称为码点(Code Point)。
而UTF-8、UTF-16、UTF-32则是对Unicode码点的转化格式,UTF是Unicode Transformation Format的简写。
注意:UTF后面的数字是指编码所用的最少比特位。例如,UTF-8最少用8位(即1个字节),UTF-16编码最少使用16位(即2个字节),UTF-32最少使用32位(即4个字节)。

以中文的“中”字为例,我们从Unicode官网(https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=4E2D)查询到码点、UTF-8、UTF-16、UTF-32编码后的十六进制表示:
在这里插入图片描述

下面用java代码输出码点、UTF-8编码后的值跟上面对照看看对不对:

package com.thb;

import java.nio.charset.Charset;

public class Test4 {

	public static void main(String[] args) {
		// 输出默认编码
		System.out.println("默认编码:"+ Charset.defaultCharset());
		String str = "中";
		// 输出“中”这个字的的Unicode码点
		System.out.println(str + "的Unicode 码点为: " + Integer.toHexString(str.codePointAt(0)).toUpperCase());
		
		// 输出编码后各字节的十六进制大写
		byte[] bytes = str.getBytes();
		System.out.println("用" + Charset.defaultCharset() + "编码后的各字节十进制表示:");		
		for (int i = 0; i < bytes.length; i++) {			
			System.out.println(Integer.toHexString(Byte.toUnsignedInt(bytes[i])).toUpperCase());
		}		
	}

}

代码执行结果,跟官网查询的结果一致:
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值