字符集详解

常见字符集介绍

字符集基础知识:

计算机底层不可以直接存储字符的。

计算机中底层只能存储二进制(0、1) 。

二进制是可以转换成十进制的。

结论:计算机底层可以表示成十进制编号。计算机可以给人类字符进行编号存储,这套编号规则就是字符集。

ASCII字符集:

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码):包括了数字、英文、符号。

ASCII使用1个字节存储一个字符,一个字节是8位,首位为0,总共可以表示128个字符信息,对于英文,数字来说是够用的。

GBK:

window系统默认的码表。兼容ASCII码表,也包含了几万个汉字,并支持繁体汉字以及部分日韩文字。

注意:GBK是中国的码表,一个中文以两个字节的形式存储。但不包含世界上所有国家的文字。

Unicode码表:

 unicode(又称统一码、万国码、单一码)是计算机科学领域里的一项业界字符编码标准。

容纳世界上大多数国家的所有常见文字和符号。

Unicode会先通过UTF-8,UTF-16,以及 UTF-32编码成二进制后再存储到计算机,其中最为常见的就是UTF-8。

注意

Unicode是万国码,以UTF-8编码后一个中文一般以三个字节的形式存储。

UTF-8也要兼容ASCII编码表。

技术人员都应该使用UTF-8的字符集编码。

编码前和编码后的字符集需要一致,否则会出现中文乱码。

汉字存储和展示过程解析

总结

1、字符串常见的字符底层组成是什么样的?

英文和数字等在任何国家的字符集中都占1个字节。

GBK字符中一个中文字符占2个字节。

UTF-8编码中一个中文1般占3个字节。

2、编码前的字符集和编码好的字符集有什么要求?

必须一致,否则会出现中文字符乱码。

英文和数字在任何国家的编码中都不会乱码 。

字符集的编码、解码操作

String编码

byte[] getBytes​() 使用平台的默认字符集将该 String编码为一系列字节,将结果存储到新的字节数组中。

byte[] getBytes​(String charsetName)

String解码

String​(byte[] bytes) 通过使用平台的默认字符集解码指定的字节数组来构造新的 String。

String​(byte[] bytes, String charsetName) 

案例

public class Test {
    public static void main(String[] args) throws Exception {
        // 1、编码:把文字转换成字节(使用指定的编码)
        String name = "abc我爱你中国";
        // byte[] bytes = name.getBytes(); // 以当前代码默认字符集进行编码 (UTF-8)
        byte[] bytes = name.getBytes("GBK"); // 指定编码
        System.out.println(bytes.length);
        System.out.println(Arrays.toString(bytes));

        // 2、解码:把字节转换成对应的中文形式(编码前 和 编码后的字符集必须一致,否则乱码 )
        // String rs = new String(bytes); // 默认的UTF-8
        String rs = new String(bytes, "GBK"); // 指定GBK解码
        System.out.println(rs);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国内内卷太严重,还不考虑一下在海外接单?那这几个平台你知道吗?

作为一个程序员,在平台上接单赚点外快是再正常不过的事情了,但是现今国内各个平台都内卷比较严重,你是否考虑过去“外面的世界”看看? 如果想过,那么这几个外国的接单平台你都知道吗? 接下来就和我一起来看…

超实用的企业防范数据泄露小技巧!

超实用的企业防范数据泄露小技巧! 小技巧1、加强员工培训,提高防范思想 及时向员工传达有关安全信息,加强员工意识、认识和执行安全措施,以防止数据泄露发生。 小技巧2、建立安全政策,明确处理流程 企业应该建立安…

Tower for Mac—Git客户端 支持M1

Tower是一款Mac OS X系统上的Git客户端软件,它提供了丰富的功能和工具,帮助用户更加方便地管理和使用Git版本控制系统。以下是Tower的一些特点: 1. 界面友好:Tower的界面友好,使用户能够轻松地掌握软件的使用方法。 …

MySQL扩展语句和约束方式

一、扩展语句 复制,通过like这个语法直接复制bbb的表结构。只是复制表结构,不能复制表里面的数据 把bbb表里面的数据,复制到test,两个表数据结构要一致 创建一张表,test1,数据从bbb来,表结构也是bbb delete…

数据库深入浅出,数据库介绍,SQL介绍,DDL、DML、DQL、TCL介绍

一、基础知识: 1.数据库基础知识 数据(Data):文本信息(字母、数字、符号等)、音频、视频、图片等; 数据库(DataBase):存储数据的仓库,本质文件,以文件的形式将数据保存到电脑磁盘中 数据库管理系统(DBMS)&…

csapp datalab

知识点总结 1. 逻辑运算符关系 and(与)、or(或)和xor(异或)是逻辑运算符,用于对布尔值进行操作。它们可以在不同的逻辑表达式之间进行转换。下面是and、or和xor之间的转换规则: a…

网络协议--TCP的未来和性能

24.1 引言 TCP已经在从1200 b/s的拨号SLIP链路到以太数据链路上运行了许多年。在80年代和90年代初期,以太网是运行TCP/IP最主要的数据链路方式。虽然TCP在比以太网速率高的环境(如T2电话线、FDDI及千兆比网络)中也能够正确运行,但…

AcWing第 127 场周赛 - AcWing 5283. 牛棚入住+AcWing 5284. 构造矩阵 - 模拟+快速幂+数学

AcWing 5283. 牛棚入住 题目数据范围不大&#xff0c;直接暴力模拟即可 按照题目所说的意思即可。 #include <math.h> #include <stdio.h> #include <algorithm> #include <cstring> #include <iostream> using namespace std; const int N 1…

Spring Cloud之ElasticSearch的学习【详细】

目录 ElasticSearch 正向索引与倒排索引 数据库与elasticsearch概念对比 安装ES、Kibana与分词器 分词器作用 自定义字典 拓展词库 禁用词库 索引库操作 Mapping属性 创建索引库 查询索引库 删除索引库 修改索引库 文档操作 新增文档 查找文档 修改文档 全量…

使用内网穿透工具进行支付宝沙箱环境支付的SDK接口远程测试

Java支付宝沙箱环境支付&#xff0c;SDK接口远程调试【内网穿透】 1.测试环境 MavenSpring bootJdk 1.8 2.本地配置 获取支付宝支付Java SDK,maven项目可以选择maven版本,普通java项目可以在GitHub下载,这里以maven为例 SDK下载地址&#xff1a;https://doc.open.alipay.com…

删除的PPT怎么找回来?4个必备恢复方法!

“最近的期末展示需要制作一个PPT&#xff0c;我熬了几个大夜才完成了&#xff0c;但是不知道怎么的我在删除其他文件时不小心把这个PPT一起删掉了&#xff0c;有什么方法可以帮我找回这个误删的PPT吗&#xff1f;” 我们在工作和学习中&#xff0c;经常都需要使用到PPT&#x…

白票某度自媒体混剪剪辑视频素材/爬虫软件说明文档

大家好&#xff0c;我是淘小白~ 软件&#xff1a;某度自媒体混剪素材爬虫软件 语言&#xff1a;Python 说明文档&#xff1a; 1、自定义关键词采集 2、采集百度aigc视频素材&#xff0c;经过测试&#xff0c;使用剪映的文字成片某度视频素材&#xff0c;可过头条的原创检测…

杂牌行车记录仪特殊AVI结构恢复案例

最近遇到一个杂牌的行车记录仪需要恢复数据&#xff0c;其使用AVI格式&#xff0c;但是在扫描恢复的过程中却发现厂家对其AVI结构进行了“魔改”致程序无法正常识别 故障存储:16G SD卡 fat32文件系统 故障现象: 16G的SD卡&#xff0c;在发生事故后客户尝试自行接到手机上读…

Mybatis—基础操作

mybatis入门后&#xff0c;继续学习mybatis基础操作。 目录 Mybatis基础操作准备工作删除操作日志输入预编译SQLSQL注入参数占位符 新增操作基本新增添加后返回主键 更新操作查询操作根据id查询数据封装条件查询条件查询 Mybatis基础操作 准备工作 根据下面页面原型及需求&am…

【产品运营】产品需求应该如何管理

产品项目在进行时经常会有一些需求需要实现&#xff0c;需求是产品更新迭代的动力&#xff0c;需求也是从用户诉求转化而来&#xff1b;在做需求管理时&#xff0c;我们需要判断一个需求的优先级等方面&#xff0c;对产品进行优化&#xff1b; 目录&#xff1a; 一、 为什么要…

游戏在小米设备上因自适应刷新率功能,帧率减半

1&#xff09;游戏在小米设备上因自适应刷新率功能&#xff0c;帧率减半 2&#xff09;Lua在计算时出现非法值&#xff0c;开启Debugger之后不再触发 3&#xff09;如何在Unity中实现液体蔓延的效果 这是第357篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&…

【Tomcat】如何在idea上部署一个maven项目?

目录 1.创建项目 2.引入依赖 3.创建目录 4.编写代码 5.打包程序 6.部署项目 7.验证程序 什么是Tomcat和Servlet? 以idea2019为例&#xff1a; 1.创建项目 1.1 首先创建maven项目 1.2 项目名称 2.引入依赖 2.1 网址输入mvnrepository.com进入maven中央仓库->地址…

SpringBoot整合自签名SSL证书,转变HTTPS安全访问(单向认证服务端)

前言 HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面&#xff0c;事物皆具两面性&#xff0c;它也是有不足之处的。例如&#xff1a; 通信使用明文&#xff08;不加密&#xff09;&#xff0c;内容可能会被窃听。不验证通信方的身份&#xff0c;因此有可能会遭遇…

LSF 概览——了解 LSF 是如何满足您的作业要求,并找到最佳资源来运行该作业的

LSF 概览 了解 LSF 是如何满足您的作业要求&#xff0c;并找到最佳资源来运行该作业的。 IBM Spectrum LSF ("LSF", load sharing facility 的简称) 软件是行业领先的企业级软件。LSF 将工作分散在现有的各种 IT 资源中&#xff0c;以创建共享的&#xff0c;可扩展…

Vue 的双向数据绑定是如何实现的?

目录 1. 响应式数据 2. v-model 指令 3. 实现原理 4. 总结 Vue.js 是一款流行的前端 JavaScript 框架&#xff0c;它以其强大的双向数据绑定能力而闻名。双向数据绑定使得数据在视图和模型之间保持同步&#xff0c;并且任一方的变化都会自动反映到另一方。那么&#xff0c;…