当前位置: 首页 > news >正文

Java IO流(五)(字符集基础知识简介)

  • 字符集
  1. 计算机的存储规则(英文字符)

  1. 常见字符集介绍

a.GB2312字符集:1980年发布,1981年5月1日实施的简体中文汉字编码国家标准。收录7445个图形字符,其中包括6763个简体汉字

b.BIG5字符集:台湾地区繁体中文标准字符集,共收录13053个中文字,1984年实施。

c.GBK字符集:2000年3月17日发布,收录21003个汉字。

包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。windows系统默认使用的就是GBK,系统显示:ANSI。

d.Unicode字符集:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

  1. 计算机的存储规则(GBK中文字符)

规则1:汉字两个字节存储

规则2:高位字节二进制一定以1开头,转成十进制之后是一个负数。

  1. 字符集小结

1.在计算机中,任意数据都是以二进制的形式来存储的

2.计算机中最小的存储单元是一个字节

3.ASCI字符集中,一个英文占一个字节

4.简体中文版Windows,默认使用GBK字符集

5.GBK字符集完全兼容ASCI字符集

一个英文占一个字节,二进制第一位是0

一个中文占两个字节,二进制高位字节的第一位是1

  1. Unicode字符集

Unicode:万国码

研发方:统一码联盟  (也叫Unicode组织)

总部位置:美国加州

研发时间:1990年

发布时间:1994年发布1.0版本,期间不断添加新的文字,最新的版本是2022年9月13日发布的15.0版本。

联盟组成:世界各地主要的电脑制造商、软件开发商、数据库开发商、政府部门、研究机构、国际机构、及个人组成

  1. UTF-16编码规则:用2~4个字节保存

Unicode Transfer Format

  1. UTF-32编码规则:固定使用四个字节保存
  2. UTF-8编码规则:用1~4个字节保存

在UTF-8编码下,英文使用1个字节保存,中文使用3个字节保存。

注意UTF-8并不是字符集,而是Unicode的一种编码方式。

Unicode字符集的UTF-8编码格式

一个英文占一个字节,二进制第一位是0,转成十进制是正数

一个中文占三个字节,二进制第一位是1,第一个字节转成十进制是负数。

  1. Java中编码的方法

String类中的方法

说明

public byte[] getBytes()

使用默认方式进行编码

public byte[] getBytes(String charsetName)

使用指定方式进行编码

  1. Java中解码的方法

String类中的方法

说明

String(byte[] bytes)

使用默认方式进行解码

String(byte[] bytes, String charsetName)

使用指定方式进行解码

代码如下:

import java.io.UnsupportedEncodingException;
import java.util.Arrays;public class CharsetDemo1 {public static void main(String[] args) throws UnsupportedEncodingException {// 1.编码String str = "你好啊~";// 使用默认字符集编码byte[] bytesDefault = str.getBytes();System.out.println(Arrays.toString(bytesDefault));// [-28, -67, -96, -27, -91, -67, -27, -107, -118, 126]// 使用GBK字符集编码byte[] bytesGBK = str.getBytes("GBK");System.out.println(Arrays.toString(bytesGBK));// [-60, -29, -70, -61, -80, -95, 126]// 2.解码String str2 = new String(bytesDefault); // 使用默认编码方式解码System.out.println(str2); // 你好啊~String str3 = new String(bytesDefault, "GBK");System.out.println(str3); // 浣犲ソ鍟妦}
}

相关文章:

  • 【3】密评-物理和环境安全测评
  • 分布式分布式事务分布式锁分布式ID
  • 1688API接口系列,商品详情数据丨搜索商品列表丨商家订单类丨1688开放平台接口使用方案
  • SQL语言重温
  • 安全快速地删除 MySQL 大表数据并释放空间
  • 忘记PDF密码了,怎么办?
  • 【计算机网络第一章知识点总结】 - - - 我为何钟情于计算机:一段有趣的选择之旅
  • 分布式环境下的session 共享-基于spring-session组件和Redis实现
  • openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup
  • ES6中的继承,String类型方法的拓展
  • 【软考中级——软件设计师】备战经验 笔记总结分享
  • uniApp项目的创建,运行到小程序
  • Data Linked UI
  • 21、命令执行
  • 小黑子——springBoot基础
  • Angular6错误 Service: No provider for Renderer2
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CentOS 7 修改主机名
  • ComponentOne 2017 V2版本正式发布
  • JavaScript创建对象的四种方式
  • java中的hashCode
  • Linux后台研发超实用命令总结
  • MySQL-事务管理(基础)
  • PHP的Ev教程三(Periodic watcher)
  • Python中eval与exec的使用及区别
  • Redis中的lru算法实现
  • text-decoration与color属性
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 项目实战-Api的解决方案
  • 消息队列系列二(IOT中消息队列的应用)
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 再次简单明了总结flex布局,一看就懂...
  • 智能合约Solidity教程-事件和日志(一)
  • ​比特币大跌的 2 个原因
  • (175)FPGA门控时钟技术
  • (windows2012共享文件夹和防火墙设置
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (论文阅读30/100)Convolutional Pose Machines
  • (一) springboot详细介绍
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET CLR基本术语
  • .NET正则基础之——正则委托
  • .sdf和.msp文件读取
  • @Resource和@Autowired的区别
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [AIGC codze] Kafka 的 rebalance 机制
  • [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子
  • [C语言]——C语言常见概念(1)
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)
  • [LeetCode] Minimum Path Sum