Java字符编码和字符集

java基础 字符集-已阅 计算机中底层只能存储二进制(0、1)计算机可以给人类字符进行编号存储,这套编号规则就是字符集。 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。

编码:字符(人能看懂的文字) ---> 字节(计算机能看懂的二进制数据)

解码:字节(计算机能看懂的二进制数据) ---> 字符(人能看懂的文字)

提示:以下是本篇文章正文内容,下面案例可供参考

一、字符集是什么?

字符集(Charset)是一种定义了字符与字节之间映射关系的规范,包括各国家文字、标点符号、图形符号、数字等,它用于在计算机中对文本数据进行编码和解码。在Java中,字符集主要由java.nio.charset包提供支持。以下是一些常见的Java字符集。

二、常见的Java字符集

1.ASCII字符集

  • ASCII码(American Standard Code for Information Interchange,美国信息交换标准代码):上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。
  • ASCII码用于显示现代英语,主要包括控制字符(回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字和西文符号)。
  • 基本的ASCII字符集,使用7位(bits)表示一个字符(最前面的1位统一规定为0),共128个字符。比如:空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。
  • 缺点:不能表示所有字符。

2.GBxxx字符集

  • GB就是国标的意思,是为了显示中文而设计的一套字符集。
  • GB2312:简体中文码表。一个小于127的字符的意义与原来相同,即向下兼容ASCII码。但两个大于127的字符连在一起时,就表示一个汉字,这样大约可以组合了包含7000多个简体汉字,此外数学符号、罗马希腊的字母、日文的假名们都编进去了,这就是常说的"全角"字符,而原来在127号以下的那些符号就叫"半角"字符了。
  • GBK:最常用的中文码表。是在GB2312标准基础上的扩展规范,使用了双字节编码方案,共收录了21003个汉字,完全兼容GB2312标准,同时支持繁体汉字以及日韩汉字等。
  • GB18030:最新的中文码表。收录汉字70244个,采用多字节编码,每个字可以由1个、2个或4个字节组成。支持中国国内少数民族的文字,同时支持繁体汉字以及日韩汉字等。

3.Unicode字符集

  • Unicode编码为表达任意语言的任意字符而设计,也称为统一码、标准万国码。Unicode 将世界上所有的文字用2个字节统一进行编码,为每个字符设定唯一的二进制编码,以满足跨语言、跨平台进行文本处理的要求。
  • Unicode 的缺点:这里有三个问题:
    • 第一,英文字母只用一个字节表示就够了,如果用更多的字节存储是极大的浪费。
    • 第二,如何才能区别Unicode和ASCII?计算机怎么知道两个字节表示一个符号,而不是分别表示两个符号呢?
    • 第三,如果和GBK等双字节编码方式一样,用最高位是1或0表示两个字节和一个字节,就少了很多值无法用于表示字符,不够表示所有字符。
  • Unicode在很长一段时间内无法推广,直到互联网的出现,为解决Unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现。具体来说,有三种编码方案,UTF-8、UTF-16和UTF-32。

4.UTF-XX字符集

UTF-8字符集:

  • Unicode是字符集,UTF-8、UTF-16、UTF-32是三种将数字转换到程序数据的编码方案。顾名思义,UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。其中,UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。
  • 互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。所以,我们开发Web应用,也要使用UTF-8编码。UTF-8 是一种变长的编码方式。它使用1-4个字节为每个字符编码,编码规则:
    1. 128个US-ASCII字符,只需一个字节编码。
    2. 拉丁文等字符,需要二个字节编码。
    3. 大部分常用字(含中文),使用三个字节编码。
    4. 其他极少使用的Unicode辅助字符,使用四字节编码。
注意:一个汉字在GBK中占用两个字节,在UTF-8中占用3个字节。

经典面试题:

为什么char类型只能存储单个字节的数据的,为什么可以存储’中’这个汉字?
因为一个字符(char)占用2个字节,在内存中使用的字符集称为Unicode字符集。
Java字符集/编码集 阅读详情

相关推荐

【2023,学点儿新Java-47】常见字符集介绍:ASCII码、 ISO-8859-1字符集、GBxxx字符集、Unicode码的缺陷、UTF-8 | 补充:条件运算符的练习

本篇主要介绍常见字符集的拓展知识,旨在帮助大家开拓视野。从编码和解码讲起,然后介绍了常见的字符集,如ASCII码、 ISO-8859-1字符集、GBxxx字符集、Unicode码和UTF-8等字符集,本篇较为详细地介绍了这些字符集的知识,但仍然存在不足,希望大家理解。第二部分给出条件运算符的实例code以及测试输出和简析。有帮助的话,点个赞吧!

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 860

Java: 字符集详解

在计算机中,任意数据都是以的形式来存储的。每一个二进制数表示的0,1被称为,8个比特位组成一个字节。:计算机最小的存储单元。

jungleirim的博客 1636

kettle信息发送钉钉

由于其他的作业比较多,想要在job中加入一个转化发送消息到钉钉,其他的配置说明直接获取系统的信息。这样也避免直接修改其他的转换和大量的工作量。 步骤: 1、新建一个转换 拉取获取系统信息、获取变量、JavaScript代码、获取access_token组件。 2、获取系统信息设置 拿到需要的信息,比如作业的读写更新删除行数,job的日志内容 这个日志内容同在作业执行页面下输出的日志,所以可以在执行作业时选择是详细日志、基本日志还是错误日志。 3、获取变量 获取变量主要是想要去拿到job的名称,文件名。按

Deng_7788的博客 1447

Java——字符集

字符集

m0_72786443的博客 2347

基于Simulink的输入-输出线性化精确转矩控制

本文详细介绍了基于Simulink的永磁同步电机(PMSM)输入-输出线性化(IOL)精确转矩控制方法。针对传统解耦控制在非线性转矩特性下的局限性,通过建立PMSM非线性状态空间模型,设计IOL控制器将系统转化为线性输入-输出映射。文章包含系统原理推导、Simulink建模步骤、参数整定方法和仿真结果分析,验证了IOL在高动态、宽速域工况下的优越性能(转矩误差降低90%)。最后提出了工程实现要点和扩展应用方向,为开发高精度电机驱动系统提供了实用指导。

xiaoheshang_123的博客 304

MQTT阿里云OTA 调试记录

2.验证,这个验证是什么意思呢,就是阿里云会把你包的信息,比如包大小,streamid(相当于包的识别码),版本号发送给你的设备,然后如果你没发送升级成功的包给阿里云,这里会是一直验证中的状态,那你的设备每次重新连接阿里云,发送connect包给阿里云的时候,阿里云就会发送一次这个验证(upgrade)包。提取到了之后就可以发送请求包了,这个请求包比较坑,也可能是我没付费,他的包一次最多只有1024个字节的数据。之前说了,验证状态下,设备发送connect包给阿里云,阿里云就会发一个upgrade包给你。

qq_42585211的博客 1231

Java字符集和字符编码研究

一、字符集和字符编码方式计算机只懂得0/1两种信号,而人类所使用的符号却无法尽数。要让计算机能够表示大千世界的符号,就一定要为每个符号指定一个唯一的整数。而这一套符号与整数的对应集合,就是我们经常谈论的字符集。而且,每一个字符所对应的整数用多少个计算机字节表示,也就涉及到了字符编码方式的问题。我们用比较规范的语言来定义这两个概念:(1) 字符集:抽象字符集合和整数集合之间的映射关系。US-ASCII、ISO 8859-1、JIS X 0201 和与 ISO 10646-1 都是字符集示例。 (2) 字字符编

First java的专栏 1106

【全新官方接口】php检测微信域名拦截,检测微信域名被封

你的域名在微信被拦截的3种常见情况 1、域名因违规或有风险被拦截(红色拦截) 2、类似taobao.com,douyin.com这种的恶意竞争式拦截,淘宝、抖音等微信的竞争对手一般都是白色拦截(白色拦截) 3、有一个中间页的拦截,需要多次点击按钮才可以跳转到你的域名的,多是一些新型域名后缀,例如.top .xyz .link后缀,这种情况,备案后可以解决(备案拦截) 通过php get_headers()函数就可以分析到结果 这个下标为6是一个URL,在微信访问后正是这个讨厌的页面! 如果切换为

TANKING,开源开发者! 2875

结合Java详谈字符编码和字符集

字符编码和字符集是两个基础性的概念,很多开发人员对其都并不陌生,但是很少有人能将其讲得很准确。当应用出现乱码时,如何分析和定位原因,很多人仍是一头雾水。这篇文章,将从字符编码和字符集的相关概念开始讲解,然后结合Java进行实例分析。 字符编码和字符集的概念 字符集(character set)是一个系统支持的所有抽象字符的集合。字符(character)就是各种文字和符号,包括国家文字、标点符...

拈花的专栏 3万+

雷电模拟器+ADB全栈爬虫实战:绕过APP反爬的终极方案与2026最新踩坑指南

现在主流的模拟器爬虫方案有三种,我对比了它们的优缺点,最终选择了雷电模拟器+纯ADB控制方案优势劣势适用场景Appium生态完善,支持多平台重依赖,启动慢,反爬检测率高大型项目,需要跨平台Airtest图像识别强大,上手简单性能差,多开不稳定,反爬检测率高简单的自动化测试纯ADB轻量无依赖,速度快,反爬检测率极低需要自己封装工具工业级爬虫,追求稳定性和反爬逆向接口速度最快,性能最好开发成本高,维护成本高接口简单,反爬弱的APP为什么选雷电模拟器?

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1982

《QGIS快速入门与应用基础》【专栏完整目录】

《QGIS快速入门与应用基础》第一卷专栏完整目录,覆盖 001–328 全部篇目与附录,逐篇可跳转。

LuckyHanMo的博客 1299

java字符集和字符编码集

Java系统内的字符以双字节存储,采用unicode(utf-16之一)编码。(估计jdk后续版本的java字符编码可能提升为4字节,这样可彻底解决东方国家字库问题。)Utf-8是一种标准存储编码格式,用utf-8编码后的字节流具有非常好的纠错和兼容能力。用utf-8编码(encode)unicode码时不会有信息损失。当然用utf-8解码(decode)utf-8编码的字节流,生成unicode

sky 3173

SAP 采购订单入库——移动类型

业务场景:采购入库,实物入库至仓库,然后系统同步过账。MIGO:收货、采购订单。 MVT:101 入库,---库存增加。 MVT:移动类型,就是代表业务场景,(比如入库、发货,成本中心发、工单发、报废、盘赢、盘亏等等) 移动类型 1、正向采购入库:101 2、反向冲销(MIGO)102:与101相反,用于错误操作的反向冲销。参考原凭证,全部进行一...

willieyuan的博客 7779

字符编码和字符集(学习Java第24天)

目录 一.字符编码 二.字符集 三.String类中编码和解码的方法 一.字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本f符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。 编码: 字符转换为字节。 解码:字节转.

weixin_42279465的博客 132

YOLOv11涨点改进| SCI一区2026 |独家创新首发、特征融合改进篇|引入FAFM特征对齐融合模块,通过特征对齐和融合两个阶段,助力多模态融合小目标检测,小目标检测,SAR图像目标检测高效涨点

🔥本文提出了一种改进YOLOv11网络模型的方法,通过引入FAFM(特征对齐融合模块)来解决多模态目标检测中的特征空间错位问题。FAFM模块采用可变形卷积和内容引导注意力机制,有效实现了跨模态特征对齐与融合,充分利用了不同模态间的互补信息。该方法在保持模型轻量化的同时,显著提升了目标检测精度和鲁棒性,特别是在复杂背景和模态差异较大的场景下表现突出。文章详细介绍了FAFM模块的结构、原理、优势,并提供了完整的代码实现和模型配置方案,为多模态目标检测任务提供了实用的技术参考。

Ai缝合怪、助力小伙伴高效发论文 267

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java - 字符集和字符编码

1.1 字符编码 字符编码Character Encoding : 就是一套自然语言的字符与二进制数之间的对应规则。 计算机存储的都是二进制 0 1,那么数字、英文、标点符号、汉字等字符其实都是根据某种规则转为二进制形式存储。 字符 -> 二进制 称为编码 二进制 -> 字符 称为解码 乱码的原因:编码和解码使用的规则不一致导致的。 1.2 字符集 字符集 Charset:也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。 常见字符集:ASCII字

从零开始的博客 1080

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java--IO--字符转换流(字符编码和字符集)

字符转换流常见问题字符转换流字符编码和字符集字符编码字符集InputStreamReader类构造方法指定编码读取OutputStreamWriter类构造方法指定编码写出转换流图解原理举个栗子总结end 常见问题 在IDEA中编码,使用FileReader读取项目中的文本文件,由于IDEA的设置都是默认为UTF-8编码,所以没有任何问题,但是,当读取Windows系统中创建的文本文件时,由于Wi...

罗俊 2508

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java--字符编码和字符集详解

Java--字符编码和字符集详解 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。 编码:按照某种规则,将字符存储到计算机中 。字符--->字节 解码:将存储在计算机中的二进制数按照某种规则...

归子莫的博客 1988

Java基础篇之二----字符编码和字符集

字符编码 字符集 字符编码和字符集的区别

Desire染指年华 580

Java基础之终于弄懂了字节、字符、字符集和字符编码

一、如何理解概念 字节 也就是Byte,是一个计量单位。数据存储是以字节为单位的,也就是常说的1KB、1M、1G等,而数据传输是以“位”(bit)为单位,一个位也就是二进制中的0或1,每8个位组成一个字节,对应该关系也就是1Byte=8bit。 字符 字符是字母、标点符号、数字的统称,汉字也是一种字符,是一种表现形式,字符在计算机上也是以二进制的形式存储的,单位是字节。...

anyway8090的博客 1076

【java笔记】字符编码和字符集

字符编码:按照某种规则,将字符储存到计算机中字符解码:将储存在计算机中的二进制数按照某种规则解析显示出来字符集/编码表:生活中文字与计算机中二进制的对应规则如果按照A规则储存,再按照B规则解析,则会出现乱码编码引出的问题:FileReader可以读取IDE默认编码格式(URF-8)的文件FileReader读取系...

weixin_41536756的博客 96

Java_转换流 字符编码和字符集 InputStreamReader类 OutputStreamWriter类

一.字符编码和字符集 1.字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本f符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现...

劉某人゜的博客 2508

十三、Java日常积累:字符集和字符编码的区别

字符集和字符编码的区别 参考链接:https://www.cnblogs.com/xdyixia/p/9114145.html

非著名JAVA程序员的博客 191

java字符集编码_java字符集和字符编码集

Java系统内的字符以双字节存储,采用unicode(utf-16之一)编码。 (估计jdk后续版本的java字符编码可能提升为4字节,这样可彻底解决东方国家字库问题。) Utf-8是一种标准存储编码格式,用utf-8编码后的字节流具有非常好的纠错和兼容能力。 用utf-8编码(encode)unicode码时不会有信息损失。当然用utf-8解码(decode)utf-8编码的字节流, 生成uni...

weixin_39804523的博客 159

java系统字符编码_Java java采用的编码、JVM平台默认字符集和外部资源的编码

(四)java对字符的处理在java应用软件中,会有多处涉及到字符集编码,有些地方需要进行正确的设置,有些地方需要进行一定程度的处理。3.1. getBytes(charset)这是java字符串处理的一个标准函数,其作用是将字符串所表示的字符按照charset编码,并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如"中文",正常情况下(即没有错误的时候)存储为"4e...

weixin_36427956的博客 273

Java字符编码解码

http://blog.youkuaiyun.com/geli_hero 字符集基础: Character set(字符集)           字符的集合,也就是,带有特殊语义的符号。字母“A”是一个字符。“%”也是一个字符。没有内在数字价值,与 ASC II ,Unicode,甚至是电脑也没有任何的直接联系。在电脑产生前的很长一段时间内,符号就已经存在了。  Coded chara

Java&&大数据专栏 2586
下一篇: Java中自定义异常类以及对象流自定义类中为什么要声明一个全局常量?
Leighteen
博客等级 码龄5年 422粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leighteen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值