首页 > 编程语言 >Java编码

Java编码

时间:2023-04-16 17:14:57浏览次数:29  
标签:编码 Java 字节 字符 unicode 字符集 Unicode

有关编码的基础 知识

1. 位 bit 最小的单元

字节

byte 机器语言的单位 1byte=8bits

1B=1byte

1KB=1024B

1MB=1024KB

1GB=1024MB

 

字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数字等。

字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。

字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多少字节表示等问题,则是由编码来决定的。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能 够识别和存储各种文字。

 

Unicode的出现

虽然通过使用不同字符集,我们可以在一台机器上查阅不同语言的文档,但是我们仍然

无法解决一个问题:如果一份文档中含有不同国家的不同语言的字符,那么无法在 一份文档中显示

所有字符 。为了解决这个问题,我们需要一个全人类达成共识的巨大的字符集,这就是 Unicode字符集。

Unicode字符集涵盖了目前人类使用的所有字符,并为每个字符进行统一编号,分配唯一的字符码( Code Point)。 Unicode字符集将所有字符按照使用上的频繁度划分为 17个层面( Plane每个层面上有 216=65536个字符码空间。其中第0个层面 BMP,基本涵盖了当今世界用到的所有字符。其他的层面要么是用来表示一

些远古时期的文字,要么是留作扩展。我们平常用到的 Unicode字符,一般都是位于 BMP层

面上的。目前 Unicode字符集中尚有大量字符空间未使用。

 

对定长的字符编码, 例如ascii, 直接每个byte查ascii表转换为字符即可

但是对unicode来说实际传输或者存储过程中, 如果使用定长双字节, 一是不能表示BMP层之外的字符, 二是对很多字符明明单字节可以表示, 用双字节产生了浪费

 

 

如上图所示, 如果一个程序要解析utf-8编码的比特流, 读取首字节后就可以知道当前字符的长度, 并拆出上面x表示的真实unicode代码

上面的110xxxxxx中的110只是标记符, xxxxx部分组合起来才是真实unicode码

 

标签:编码,Java,字节,字符,unicode,字符集,Unicode
From: https://www.cnblogs.com/littlezt/p/17323576.html

相关文章

  • 深入理解 Java 的整型类型:如何实现 2+2=5?
    在开始关于Java的整型类型讨论之前,让我们先看下这段神奇的Java代码:publicstaticvoidmain(String[]args)throwsException{doSomethingMagic();System.out.printf("2+2=%d",2+2);}执行结果,控制台打印的内容:2+2=5那么doSomethingMagic方法......
  • js 传递汉字 乱码_JavaScript 字符串反转乱码问题解决
    https://blog.csdn.net/weixin_36483301/article/details/113451892emoji表情和非常用字实际解决中文编码问题,可以通过解码解决js中使用decodeURL即可解决......
  • java反射
    java反射1.基本定义Java反射机制是在运行状态时,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制。可以说为对象可以通过......
  • Java中abstract(抽象类)
    1、概述(1)只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。使用abstract修饰符来表示抽象方法和抽象类。(2)abstract修饰符表示所修饰的类没有完全实现,还不能实例化。如果在类的方法声明中使用abstract修饰符,表明该方法是一个......
  • Java JDBC批处理添加出现问题,求解决方案
    晚辈使用JDBC批处理时出现一个问题,使用addBatch()方法将记录加入批处理中,我想让这五千条记录每达到一千条记录再执行,以此提高效率,可最后执行在数据库查看时仅五条记录,我尝试将 preparedStatement.executeUpdate();提出if语句,虽然是有五千条记录,但效率相当的慢请求前辈们给出解决......
  • java多版本共存
    原理通过脚步改变path环境变量来实现java多版本切换.这里使用的是Win10.一,删除原有的java搜索路径.在安装高版本的java时,会添加一个路径到path环境变量中,如我的C:\ProgramFiles\CommonFiles\Oracle\Java\javapath,在该目录下存有java.exe和javac.exe等.在用cmd执行命令时,......
  • java语句
    语句语句是以;或}或)结尾的一段代码,目的是执行某些操作,并且没有返回值。语句块和方法体也算语句。所以,语句是可以嵌套的。函数体是一个有名称的语句。对于拥有子语句的语句,称为复合语句,否则就是简单语句。 简单语句空语句:;;;方法调用语句:setVal(34);表达式语句:i......
  • javascript 把嵌套的 map 转成 object,再转 json 字符串
    使用JSON.stringify转map时发现并没有转成想要的JSON数据,搜索发现要转成Object才能够转成完整的JSON,用递归转换:constconvertNestedMapToObject=(map)=>{if(mapinstanceofMap){map.forEach((v,k)=>{......
  • FreeSWITCH添加iLBC编码及转码
    操作系统:CentOS7.6_x64FreeSWITCH版本:1.10.9一、安装ilbc库从第三方库里下载指定版本:gitclonehttps://freeswitch.org/stash/scm/sd/libilbc.git如果下载过慢,可从如下途径获取:关注微信公众号(聊聊博文,文末可扫码)后回复20230416获取。编译及安装步骤如下:./boots......
  • javascript常用的循环对比及性能分析
    结论:js中的for循环只有在处理百万条数据以上才会展示出他的强大性能,和看出明显优势,但是在百万条数据往下甚至到个位数的数据量通常都是for和while还有do...while不相上下,反而后两者更加优势明显下面是测试耗时截图(在不同浏览器也会有所不同,我这是Chrome版本111.0.5563.149)......