黑马程序员-java专题系列之2-字符编码

实验六 有源滤波器 实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路 阅读详情

------- android培训、java培训、期待与您交流! ----------

java专题系列之2-字符编码
在讨论编码之前,我们得知道什么是编码表?
我们写一篇日志,并将其存入本地硬盘,是将字符存入硬盘吗?不是,因为计算机只能识别二进制数据,也就是0101之类的二进制数据,这时候就需要通过查询一张表,然后对应字符的二进制数据
存入硬盘,这张表我们就将其称为编码表.常见的编码表有
ASCII 老美的码表,使用一个字节的七位表示
ISO8859-1 欧洲的码表,使用一个字节的全部八位表示
GB2312      汉字的码表,使用两个字节表示
GBK         GB2312的扩展,支持更多的汉字,包括简体字和繁体字,GBK 和 GB2312向下兼容ASCII
UNICODE     两个字节表示一个字符,Unicode只与ASCII兼容(更准确地说,是与ISO8859-1兼容),与GB码不兼容(两个字节想表示全世界所有的文字明显不可能吗?老美脑子秀逗了吗)
UTF-8 UTF-8是一种8位的unicode字符集,编码长度是可变的
关于unicode和utf-8的关系,从网上copy下来的


最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。显然,这样要表示各种语言中所有的字符是远远不够的。
Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义1048576个附加字符,目前unicode4.0只定义了45960个附加字符。
Unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:UTF-8,UCS-2和UTF-16,三种unicode字符集之间可以按照规范进行转换。


UTF-8是一种8位的unicode字符集,编码长度是可变的,并且是ASCII字符集的严格超集,也就是说ASCII中每个字符的编码在UTF-8中是完全一样的。
UTF-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。一般来说,欧洲的字母字符长度为1到2个字节,
而亚洲的大部分字符则是3个字节,附加字符为4个字节长。
Unix平台中普遍支持UTF-8字符集,HTML和大多数浏览器也支持UTF-8,而window和java则支持UCS-2。


UTF-8的主要优点:
对于欧洲字母字符需要较少的存储空间。
容易从ASCII字符集向UTF-8迁移。


'\u0001' 到 '\u007F' 范围内的所有字符都是用单个字节表示的: 
 位值 
字节 1 0 位 6-0 
 
null 字符 '\u0000' 以及从 '\u0080' 到 '\u07FF' 的范围内的字符用两个字节表示: 


 位值 
字节 1 1 1 0 位 10-6 
 
字节 2 1 0 位 5-0 
 
'\u0800' 到 '\uFFFF' 范围内的 char 值用三个字节表示: 
 位值 
字节 1 1 1 1 0 位 15-12 
 
字节 2 1 0 位 11-6 
 
字节 3 1 0 位 5-0 
 

实例1

import java.util.Arrays;

public class TestEncode1 {

	public static void main(String[] args) throws Exception {
		String s = "你好";
		byte[] b1 = s.getBytes();
		String s1 = Arrays.toString(b1);
		System.out.println(s1);
		byte[] b2 = s.getBytes("gbk");
		String s2 = Arrays.toString(b2);
		System.out.println(s2);

	}
}

从打印的数字来看,java使用的就是GBK编码
实例2

import java.util.Arrays;

public class TestEncode2 {

	public static void main(String[] args) throws Exception {
		String s = "你好";
		//String s = "a你好";
		byte[] b1 = s.getBytes("gbk");
		String s1 = Arrays.toString(b1);
		System.out.println(s1);
		byte[] b2 = s.getBytes("utf-8");
		String s2 = Arrays.toString(b2);
		System.out.println(s2);
	}

}

打印的结果是
[-60, -29, -70, -61]
[-28, -67, -96, -27, -91, -67]
从打印的结果来看gbk码表是把一个汉字当成是两个字节数据来存储,而utf-8是把一个汉字当成3个字节表示
你如果把s换成a你好,打印的是
[97, -60, -29, -70, -61]
[97, -28, -67, -96, -27, -91, -67]
最前面的97就是a的Ascii码表示的值,由此可见gbk和utf-8都是兼容Ascii码的,并且说使用gbk码表不代表所有字符都是用两个字节的表示的,编码长度不是定长的


实例3

import java.util.Arrays;

public class TestEncode2 {

	public static void main(String[] args) throws Exception {
		String s = "你";
		byte[] b1 = s.getBytes("gb2312");
		System.out.println(Arrays.toString(b1));
		String s1 = new String(b1, "utf-8");
		System.out.println(s1);
		byte[] b2 = s1.getBytes("utf-8");
		System.out.println(Arrays.toString(b2));
		String s2 = new String(b2, "gb2312");
		System.out.println(s2);

	}
}

打印的结果是
[-60, -29]
??
[-17, -65, -67, -17, -65, -67]
锟斤拷

这是一种特殊情况,使用unicode解码会根据二进制数据具体的值来判断到底是用一个字节表示一个字符还是两个字节表示一个字符或是三个字节表示一个字符,本例中显然是一个字节表示
一个字符,重新编码回去后的值与原先不一样,所以在利用gbk解码会与先前不一样,而将utf-8换成iso8859-1则不会出错(iso8859-1一个字节代表一个字符)

IMU、INS、GNSS与组合导航:从原理到工程实践全解析 在自动驾驶、无人机和机器人等智能系统的定位方案中,IMU、INS、GNSS和组合导航常被混为一谈,但它们在硬件层级、数据特性和误差机制上截然不同。IMU作为惯性测量单元,以百赫兹以上频率输出加速度和角速度;INS基于IMU完成姿态、速度与位置的递推解算,却因积分累积误差而随时间漂移;GNSS提供绝对位置,但易受遮挡和干扰。组合导航通过卡尔曼滤波将两者融合,实现短期不飘、长期不偏的连续定位,这正是高精度导航系统的技术底座。工程落地时,从IMU标定、Allan方差分析到相机/LiDAR与IMU外参标定,再到松耦 阅读详情

相关推荐

AIDL HAL服务从零到一:构建现代Android硬件抽象层

本文详细介绍了从零开始构建现代Android AIDL HAL服务的完整流程。通过定义接口、实现服务逻辑、配置构建与VINTF清单,并最终集成到系统镜像,开发者可以掌握利用AIDL替代传统HIDL来开发硬件抽象层的核心方法。文章重点解析了AIDL HAL的创建流程,并对比了其与HIDL在语法、工具链和集成方式上的优势,帮助开发者高效构建稳定的硬件接口。

weixin_29174141的博客 145

黑马程序员——字符编码以及字符联通

------- android培训、java培训、期待与您交流! ----------   1. 字符编码和解码 在Java中,字符编码指的是:将字符串转换成字节数组,转换的方法是通过方法getByte()实现的,该方法可以指定编码表,也可以不指定,不指定编码表则使用默认的编码表。下面,我们将通过字符编码和解码,解决如何给字符编码以及解码。 1.1 字符编码 下面的例子,将中

LanceDream的专栏 1112

<蓝桥杯软件赛>零基础备赛20周--第16周--GCD和LCM

gcd,lcm

罗勇军的博客 7602

黑马程序员_字符编码与解码讲解

字符编码与解码讲解 1. 字符编码和解码 在Java中,字符编码指的是:将字符串转换成字节数组,转换的方法是通过方法getByte()实现的,该方法可以指定编码表,也可以不指定,不指定编码表则使用默认的编码表。下面,我们将通过字符编码和解码,解决如何给字符编码以及解码。 1.1 字符编码 下面的例子,将中文字符进行编码,并指定编码表。控制台的输出结果为: -60, -29,

sihei的专栏 1034

手眼标定(EyeToHand)推导

Base为基坐标系(B),工具末端坐标系(T),标定板为Mark坐标系(M),相机坐标系(C)对于每两个姿态都存在上式,组成一个AX=XB的矩阵方程,X为。此时转换成AX=0的问题,单纯用SVD求奇异解便可得到。相机坐标系到Base基坐标系下的转换关系。已知标定板与机械臂末端的相对位置固定不变,,即。带入(2)式求,至此求解出需要的手眼矩阵。在眼在手外的时候,其实是要求解。

stevenreally6的博客 1142

深入解析TOM模块的PWM输出与ADC触发机制:从配置到DMA数据传输

本文深入解析了TOM模块在嵌入式系统中的核心应用,详细阐述了如何配置其PWM输出功能,并实现与ADC模块的硬件触发同步。重点介绍了通过DMA机制高效传输ADC采样数据的完整流程,涵盖时钟配置、工作模式选择、引脚映射及联调实战,为电机控制、数字电源等实时系统提供了一套硬件自动化的高效解决方案。

weixin_29227585的博客 367

IO流(黑马程序员学习笔记)

字节缓冲流在源代码中内置了字节数组,可以提高读写效率。效率高(推荐,代码简单),流每次拿指定数组大小的字节,再写入目的源。效率高,每次从数据源拿8192个字节,再放到内存中,每次从内置数组(调用出来的数组)中拿每次拿指定数组大小的字节,写到输出数组中,写满8192个字节后,输出。/*D:\00-课程介绍.mp4 146MB拷贝的效率测试:1. 普通流单个字节拷贝 361719毫秒2. 普通流 + 自定义数组拷贝 146毫秒3. 缓冲流单个字节拷贝 2055毫秒。

A2294249395的博客 890

从命名玄学看单片机江湖:STC、STM32与ESP32的型号密码与设计哲学

本文解析了STC、STM32和ESP32三大主流单片机系列的型号命名规则,揭示了其背后的设计哲学与市场策略。通过详细解读STC89C52、STM32F103C8T6等具体型号,帮助开发者理解芯片核心特性、性能等级及适用场景,为嵌入式系统选型提供实用指南。

g5h6i的博客 759

黑马程序员--java中的一些字符编码

字符编码: 主要介绍 Unicode编码、UTF-8编码、UTF-16编码   计算机里只有数字,计算机软件里的一切都是用来数字来表示的,屏幕上显示的一个个字符也不例外   字符a对就数是97 想这种字符编码对应的规则被称为ASCII。ASCII的最高bit位都是0,也就是说这些数字在0-127之间   Unicode编码:将全世界所有的符号进行了统一编码    特点: 该编码的字符都占用两个字节

whf769的专栏 470

OpenClaw 在 Windows 环境下的完整安装、配置和部署指南

介绍Windows环境下OpenClaw的完整安装,配置和部署的全流程

hxbao的专栏 1485

虚幻商城 Quixel 免费资产一键入库

在免费领取所有Megascans之后,我们只是有了获取 Quixel Megascans 资产的资格,但是没有入 Fab 库,本文将讲解通过脚本将 Quixel 所有资产入库 Fab。

一碗清深的博客 3265

黑马程序员:字符编码介绍

字符编码: 字符流的出现为了方便操作字符 更重要的是加入了编码转换 通过子类转换流来完成 InputStreamReader OutputStreamWriter 在两个对象进行构造的时候可以加入字符集 提示:除了这两个对象可以加入字符集外,还有PrintStream、PrintWriter,但是它们是打印流,只用于打印 常见编码表: ASCII:美国标准信息交换码。用一个字

Java notes 891

ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting `torch.set解决方案

本文主要介绍了ValueError:Using a `device_map`, `tp_plan`, `torch.device` context manager or setting 'torch.set_default_device(device)` requires `accelerate`解决方案,希望能对使用transformers的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

黑马程序员 Date 、Calendar 、数学类和字符编码

------- android培训、java培训、期待与您交流! ---------- 1 Date: import java.util.*; import java.text.*; class DateDemo1 { public static void main(String[] args) { Date d=new Date(); System.o

xiaxiaotong0723的专栏 757

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

黑马程序员训练营:字符编码

一、什么是字符编码?为了满足人与计算机的交互需要,首先要解决的问题就是语言的翻译问题。作为计算机,其语言的符号集合是确定的:{0,1}。然而人的语言却是多种多样的,不同国家或地区的语言符号集合存在很大的差异。也正因此,不同国家或地区都建立了各自的计算机字符编码集,以满足和规范本地人与计算机的交互需求。从根本上说,字符集就是从人类语言符合集合到计算机符号所表达的整型值集合之间的一个函数映射关系。二、字符编码的使用情境当我们说对字符进行编码时,事实上,我们已经可以忽略字符的数值方面,因为此时字符所代表的数值已经

周月波的专栏 1012

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

黑马程序员--IO流和字符编码

------- android培训、java培训、期待与您交流! ---------- IO流和字符编码   File类的常见方法。   1,创建。                 boolean createNewFile():在指定位置创建文件,如果已经纯在,则补创建,返回false。                                    

a294645832的专栏 371

黑马程序员_对于字符编码及字符集的理解

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

667

黑马程序员---字符编码

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------   转换流的字符编码:  字符流的出现为了方便操作字符。 更重要是的加入了编码转换。 通过子类转换流来完成。 InputStreamReader OutputStreamWriter 还有两个能加入字符集的是:

程序员 805

黑马程序员 java视频学习日记

2011年8月3日                          今天终于开始了视频学习的第一天,刚开始还真是有点激动,因为不知道接下来会怎样。 我自认为自己的基础还可以,所以就先从IO看起了。一打开视频,眼前出现的是一段前奏感觉真的不一样。更增强了我加入黑马的决心。以

500

黑马程序员_java内部字符编码浅析

------- android培训、java培训、期待与您交流! ----------  java内部字符编码浅析     本周遇到一个java乱码问题,于是对java的编码问题做了一些实验和了解。简单分析如下: 先看下如下代码: Java代码   import java.io.UnsupportedEncodingException;      

李鑫的博客 428

黑马程序员——IO流及字符编码和File类对象

------- android培训、java培训、期待与您交流! ---------- IO流 IO抽象基类如下图所示: 由这四类派生出来的子类名称都是以器父类名作为子类名的后缀 如: InputStream的子类FileInputStream; Reader的子类FileReader。 专门用于操作文件Writer子类对象FileWriter。后缀名是父类名,前缀名

kenfine的专栏 712

黑马程序员_I/O流(字符编码问题)

---------- android培训、java培训、java学习型技术博客,期待与您交流!----------         字符编码问题是程序开发中经常遇到的问题,造成的原因其实并不复杂,但需要注意避免和解决。         先来回顾下在转换流中有所涉及过的字符编码。 import java.io.*; class EncodeStream{ public static void

Jack_bj90421的专栏 717

黑马程序员_字符编码

---------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 字符编码  1.字符流的出现是为了方便操作字符。  2.更重要的是加入了编码转换。  3.通过子类转换流来完成。    3.1:InputStreamReader    3.2:OutputStreamWrirer  4.在两个对象进行构造的时候可以加入字符集

wzy_841758518的专栏 327

黑马程序员—字符编码问题

字符编码: 主要介绍 Unicode编码、UTF-8编码、UTF-16编码  计算机里只有数字,计算机软件里的一切都是用来数字来表示的,屏幕上显示的一个个字符也不例外   字符a对就数是97 想这种字符编码对应的规则被称为ASCII。ASCII的最高bit位都

dong_yi123的专栏 344

黑马程序员--java基础:字符IO流

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- 一、流的操作规律: 1,明确源和目的(汇) 源:InputStream Reader 目的:OutputStream Writer 2,明确数据是否是纯文本数据。 源:是纯文本:Reader;否:InputStream 目的:是纯文本 Writer;否:Outpu

java888kankan的专栏 539

黑马程序员_字符编码解码

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 关于字符集与字符编码的基础知识,见http://www.crifan.com/files/doc/docbook/char_encoding/release/html/char_encoding.html#enc_iso8859。 常用的编码表:    *ASCII:美

dsp_001的专栏 666

黑马程序员——Java基础知识——IO(Properties、打印流、IO其他类、字符编码)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! Properties、打印流、其他流对象、字符编码

ai272519的专栏 544
上一篇: 黑马程序员-java专题系列之1-正则表达式
下一篇: 黑马程序员-java专题系列之3-日期
vmvm555
博客等级 码龄15年 4粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值