Java编码

news2025/2/27 1:16:33

Java编码问题

  1. Unicode与码点

所谓Unicode就是全世界的字符字典,也就是把字符给一个编号,这个编码就是码点。比如
在这里插入图片描述
2. 编码
由于这种分配的编码无论从占用空间角度,还是读取速度,以及逻辑划分角度,都不是完善。所以出现了计算机编码,就是把每一个字符分配一个二进制的数字来表示。比如采用hafman编码,这种可以大大的节省存储空间,现代的压缩逻辑有的就是这样。

  • 采用utf-8编码,是一种边长编码,就是不同的字符占用的字节数目是不同的,一般来说ascii码占用1个字节,中文字符占用三个字节,还有特殊字符占用4个字节等等。
  • 采用utf-16编码,一般每一个字符都占用两个字节,但是对于字符串来说,会存在字节顺序标记(Byte Order Mark,BOM)。BOM是一个特殊的Unicode字符(U+FEFF),用于指示文本的字节顺序(大端或小端),占用两个字节。所以一般会在总字符字节长度上在加上2。
  1. 对应的实验如下
package com.inspur;

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author: Zekun Fu
 * @date: 2023/9/30 20:43
 * @Description:
 */
public class Main5 {
    public static void main(String[] s) throws UnsupportedEncodingException {

        // 10 然后一个结尾字符'/0'
        String str = "Hello, 世界! 所有字符都是一样的";
        System.out.println(str.length());

        // 获取字符串的UTF-16字节数组
        byte[] utf16Bytes = str.getBytes(StandardCharsets.UTF_16);
        System.out.println(utf16Bytes.length);

        int len = 0;
        // 遍历字节数组,计算每个字符所占用的字节数
        for (char c : str.toCharArray()) {
            String t = ("" + c);
            len = t.getBytes(StandardCharsets.UTF_16).length;
            System.out.println("字符: " + t  + ", 字节数: " + len);
        }
        // 遍历字符串的每个码点
        for (int i = 0; i < str.length(); i++) {
            int codePoint = str.codePointAt(i);
            System.out.println("\"" + str.charAt(i) + "\"的码点:" + codePoint);
        }
    }
}

  1. 结果
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1057887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ai4science学习、教育和更多

11 学习、教育和更多 人工智能的进步为加速科学发现、推动创新和解决各个领域的复杂问题提供了巨大的希望。然而&#xff0c;要充分利用人工智能为科学研究带来的潜力&#xff0c;我们需要面对教育、人才培养和公众参与方面的新挑战。在本节中&#xff0c;我们首先收集了关于每…

Java并发-满老师

Java并发 一级目录栈与栈帧线程上下文切换三级目录 一级目录 栈与栈帧 满老师视频链接 我们都知道 JVM 中由堆、栈、方法区所组成&#xff0c;其中栈内存是给谁用的呢&#xff1f;其实就是线程&#xff0c;每个线程启动后&#xff0c;虚拟机就会为其分配一块栈内存 每个栈由…

CSS基础语法之盒子模型

目录 一、 选择器 1.1 结构伪类选择器 1.1.1基本使用 1.1.2 :nth-child(公式) 1.2 伪元素选择器 二、 PxCook 三、盒子模型 3.1 盒子模型-组成 3.2 边框线 3.2.1四个方向 3.2.2 单方向边框线 3.3 内边距 3.4 尺寸计算 3.5 外边距+版心居中 3.6 清除默认样式 3.7…

简单丝的tab切换栏(html/CSS)

#html <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>CSS实现左右滑动选项卡效果</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-res…

查看虚拟机ip地址

前几天安装了docker&#xff0c;运行了一下以后发现自己的主机无论如何也访问不了虚拟机上运行的容器&#xff0c;老实说我大受打击&#xff0c;因为各种各样的方法我都试了个遍&#xff0c;重装&#xff0c;配私服&#xff0c;各种各样的方法&#xff0c;结果显示却是正常的&a…

紫光同创FPGA图像视频采集系统,提供2套PDS工程源码和技术支持

目录 1、前言免责声明 2、紫光同创FPGA相关方案推荐3、设计思路框架视频源选择OV7725摄像头配置及采集OV5640摄像头配置及采集动态彩条HDMA图像缓存输入输出视频HDMA缓冲FIFOHDMA控制模块 HDMI输出 4、PDS工程1详解&#xff1a;OV7725输入5、PDS工程2详解&#xff1a;OV5640输入…

想要精通算法和SQL的成长之路 - 恢复二叉搜索树和有序链表转换二叉搜索树

想要精通算法和SQL的成长之路 - 恢复二叉搜索树和有序链表转换二叉搜索树 前言一. 恢复二叉搜索树二. 有序链表转换二叉搜索树 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 恢复二叉搜索树 原题链接 首先&#xff0c;一个正常地二叉搜索树在中序遍历下&#xff0c;遍历…

win10 快捷键

WinD 回到桌面 WinE 文件资源管理器 WinI windows设置 WinL 锁屏 Wintab 显示所有已打开窗口的缩略图 Alttab 在所有已打开窗口的缩略图中快速切换 Win空格 输入法切换 WinshiftS 截图 windows10下有哪些必须掌握的快捷键&#xff1f; - …

【Java-LangChain:使用 ChatGPT API 搭建系统-2】语言模型,提问范式与 Token

第二章 语言模型&#xff0c;提问范式与 Token 在本章中&#xff0c;我们将和您分享大型语言模型&#xff08;LLM&#xff09;的工作原理、训练方式以及分词器&#xff08;tokenizer&#xff09;等细节对 LLM 输出的影响。我们还将介绍 LLM 的提问范式&#xff08;chat format…

Python开源项目月排行 2023年9月

#2023年9月2023年9月9日1fishdraw这个项目是用来随机生成一条鱼的&#xff0c;这条鱼特别的稀奇古怪&#xff0c;这个项目不依赖任何库&#xff0c;支持 svg, json, csv 等格式。2vizro一个用于创建模块化数据可视化应用程序的工具包。在几分钟内快速自助组装定制仪表板 - 无需…

谈谈Redis分布式锁

目录 一、回顾分布式锁 &#xff08;一&#xff09;理解分布式锁的定义 &#xff08;二&#xff09;分布式锁的约束条件 &#xff08;三&#xff09;分布式锁常见实现方式 基于数据库的分布式锁 基于缓存的分布式锁 基于分布式一致性算法的分布式锁 基于文件系统的分布…

JavaSE | 初始Java(十) | 继承和多态

继承 (inheritance) 机制 &#xff1a;是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加新功能 &#xff0c;这样产生新的类&#xff0c;称 派生类 。继承呈现了面向对象程序设计的层次结构&#xff…

在线教育平台开发:数字化教育的奇妙时代

在今天的数字化时代&#xff0c;教育正在经历着前所未有的变革。在线教育平台的兴起已经改变了传统教育的局面&#xff0c;为学习者和教育者提供了无限的机会。本文将深入探讨在线教育平台开发的关键方面&#xff0c;并穿插一些实际代码示例&#xff0c;以帮助您了解如何创建一…

层次架构、面向服务架构(四十四)

层次架构设计 表现层、中间层、数据访问层、数据架构规划、物联网层次架构、层次式架构案例分析。 层次结构缺点就是效率问题&#xff0c;上一层调用下一层。 1、着重写中间层 组件设计&#xff1a;面向接口编程&#xff0c;分为接口和实现类。 实体设计&#xff1a;实体表…

监狱工具管理系统-监狱劳动工具管理系统

监狱劳动工具管理系统(智工具DW-S308)是依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对工具进行统一管理、分析的信息化、智能化、规范化的系统。 当前各级监狱工器具管理更多的是借助于传统的人工管理方法和手段&#xff0c;数据的采集和录入一直以…

作业 day4

完成父子进程通信

Redis的java客户端-RedisTemplate光速入门

一.创建springboot项目 二.引入2个依赖 <!-- redis依赖-->这个已经引入了&#xff0c;因为创建的时候勾选了<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><…

【unity实战】手戳一个库存系统,非常适合RPG、Roguelike和星露谷物语之类的游戏

文章目录 前言素材开始配置不同物品信息实例化物品拾取物品物品栏、库存大小寻找物品栏并可以添加物品库存已满问题解决库存UI脚本显示物品信息切换指示器丢弃物品添加丢弃弹出效果 最终效果源码完结 前言 其实前面我已经做过了很多次背包库存系统了&#xff0c;背包系统实现方…

【计算机网络】数据链路层(学习笔记)

一、数据链路层概述 1、基本概念 1&#xff09;数据链路层模型 2&#xff09;数字管道 常常在两个对等的数据链路层之间画出一个数字管道&#xff0c;而在这条数字管道上传输的数据单位是帧。 3&#xff09;链路与数据链路 链路是一条点到点的物理线路段&#xff0c;中间没…

Vue中如何进行滚动加载与无限滚动

Vue中的滚动加载与无限滚动 滚动加载&#xff08;Infinite Scroll&#xff09;是现代Web应用程序中常见的用户体验功能之一。它允许在用户滚动到页面底部时自动加载更多内容&#xff0c;通常用于分页显示大量数据。Vue.js作为一种流行的前端框架&#xff0c;提供了实现滚动加载…