美文网首页
[Java NIO]Java 字符集

[Java NIO]Java 字符集

作者: 檀香灰 | 来源:发表于2020-08-06 18:08 被阅读0次

1.Java 与 Unicode

  • Unicode ,也叫做统一码,是计算机领域里的业界标准,包括字符集和编码方案;解决跨语言、跨平台的的文本处理问题,90年开始研发,94年正式公布。
  • Unicode 把全世界所有的语言的字符集统一到一个独立的、全面的映射中。
  • Java 使用Unicode 表示字符,与以字节为导向的C、C++ 相比,Unicode 的固有支持简化了字符的数据处理。

大部分操作系统在I/O 与文件存储方面仍然是以字节为导向的,所以无论使用何种编码,Unicode或其它,在字节序列和字符集编码之间仍然需要转化。

2.JVM 的字符集

  • 每个JVM 都需要支持标准的字符集,如US-ASCII/ISO-8859-1/UTF-8/UTF-16/UTF-16LE/UTF-16BE
  • JVM 启动时确定默认值,取决于潜在的操作系统环境、区域设置JVM 设置等

3.Unicode 与 UTF-32/UTF-8

  • Unicode 统一了所有字符的编码,是字符集,而字符集只是给所有字符一个唯一的编码;
  • Unicode 没有规定如何存储字符
  • UTF-32:一个字符使用四个字节存储,也就是32位,涵盖了Unicode 的所有字符;
  • UTF-8:变长编码,8位一组表示Unicode 字符格式

UTF-32 规则简单,但是缺陷明显,对一个西文字母,UTF-32 是ASCII 花费空间的四倍 (ASCII 每个字符只需要一个字节存储)。

UTF-8 的编码规则如下(U+ 后面的数字代表 Unicode 字符代码):

U+ 0000 ~ U+ 007F: 0XXXXXXX
U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX
U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX
U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

可以看到,UTF-8 通过开头的标志位位数实现了变长。对于单字节字符,只占用一个字节,实现了向下兼容 ASCII,并且能和 UTF-32 一样,包含 Unicode 中的所有字符,又能有效减少存储传输过程中占用的空间

相关文章

  • Java IO流 -- 03 Java的NIO

    导读目录 Java的NIO概述 使用Buffer(缓冲) 使用Channel(通道) 字符集和Charset 前面...

  • [Java NIO]Java 字符集

    1.Java 与 Unicode Unicode ,也叫做统一码,是计算机领域里的业界标准,包括字符集和编码方案;...

  • Java学习资源收集

    Java基础核心 Java NIO Java NIO系列教程(并发编程网) 攻破JAVA NIO技术壁垒 Java...

  • nio

    参考文章 Java Nio Java NIO学习笔记 - NIO客户端时序图 Java NIO学习笔记 - NIO...

  • Chapter 15 . Java NIO

    阅读原文 Chapter 15 . Java NIO 15.1 Java NIO 简介 Java NIO(New...

  • Java Nio 之Buffer

    Java Nio 系列Java Nio 之BufferJava Nio 之直接内存Java Nio 之高级搬砖工(...

  • Java Nio 之高级搬运工(FileChannel)二

    Java Nio 系列Java Nio 之BufferJava Nio 之直接内存Java Nio 之高级搬砖工(...

  • Java Nio 之高级搬砖工(FileChannel) 一

    Java Nio 系列Java Nio 之BufferJava Nio 之直接内存Java Nio 之高级搬砖工(...

  • Java Nio 之直接内存

    Java Nio 系列Java Nio 之BufferJava Nio 之直接内存Java Nio 之高级搬砖工(...

  • java NIO

    并发编程网 - Java NIO系列教程 javaeye - Java NIO 系列教程 NIO 入门 Java ...

网友评论

      本文标题:[Java NIO]Java 字符集

      本文链接:https://www.haomeiwen.com/subject/gprlrktx.html