Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的(ASCII码),它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布.

一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “UNICODE”。

UNICODE 来到时,一起到来的还有计算机网络的兴起,UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8 就是每次 8 个位传输数据,而 UTF16 就是每次 16 个位,只不过为了传输时的可靠性,从 UNICODE 到 UTF 时并不是直接的对应,而是要过一些算法和规则来转换。

UTF是Unicode TransferFormat的缩写,UTF-8和UTF-16都是把Unicode码转换成程序数据的一种编码方式。

  • UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

    像UTF-8里面,ASCII所表示的字符集就是用1 Byte来表示,而大部分汉字则是用3 Byte来表示。

    相较于Unicode统一使用2 Byte来表示字符,在遇到大部分字符都可以用1 Byte表示时,能够节省许多存储空间。但是,如果遇到需要用超过2 Byte来表示的字符,那么UTF-8的编码方式则会消耗更多的存储空间。

  • UTF-16是Unicode字符编码五层次模型的第三层:字符编码表(Character Encoding Form,也称为 “storage format”)的一种实现方式。即把Unicode字符集的抽象码位映射为16位长的整数(即码元, 长度为2 Byte)的序列,用于数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示

    引用维基百科中对于UTF-16编码的解释我们可以知道,UTF-16最少也会用2 Byte来表示一个字符,因此没有办法兼容ASCII编码ASCII编码使用1 Byte来进行存储)。

  • GBK是个什么东西。GBK是国标扩(展)的拼音首字母,是我国在1995年制定的专门针对汉语和一些少数名族语言的编码方式,和Unicode之间没有一一对应的关系,也就是说Unicode中有的字符GBK不一定有,GBK有的字符Unicode也不一定有,而且GBK和Unicode中共有字符,他们的编码值没有一种简单的对应关系,也就是无法通过简单计算得到,只能通过查表转换。为什么会有GBK这种奇葩呢?其实是当时Unicode还没制定好,更没在全球范围内推广,而中国人要用电脑总不可能永远用英语吧?所以我国就自行制定了一个国标,当时是GB2312,(其实台湾地区针对繁体还有一个Big5,但这里就不详述了),GB2312后来增加了很多字符,包括很多少数名族的语言,成为了一个新的编码标准,那就是GBK。

  • 一个汉字占几个字符?

    这和编码有关,UTF8一个汉字占3个字节,GBK一个汉字占2个字节。在Java中,char类型描述了UTF-16编码中的一个代码单元

  • 一个中文需要3个字节才可以存储,而char只有两字节?

    java采用UTF-16编码,UTF-16有两种编码方式,2字节的和4字节的,2字节的编码后等于Unicode值

  • 字节与字符:

    • ASCII 码中,一个英文字母(不分大小写)为一个字节
    • UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。
    • Unicode 编码中,一个英文为一个字节,一个中文为两个字节。
    • 符号:**英文标点为一个字节,中文标点为两个字节。**例如:英文句号 . 占1个字节的大小,中文句号 。占2个字节的大小。
    • UTF-16 编码中,一个英文字母字符或一个汉字字符存储都需要 2 个字节**(Unicode 扩展区的一些汉字存储需要 4 个字节)**。
    • UTF-32 编码中,世界上任何字符的存储都需要 4 个字节

求赞

JAVA中的字符编码相关推荐

  1. java中处理字符编码(网页与数据库)(转)

    首先声明一下,此文章时从网上转载的.如下的某些方法是确实管用,但是从中发现了有一点不足,就是原文笔者没考虑使用不同Web Server时出现的情况,比如文章里我用红色字体画出来的部分代码在Tomcat ...

  2. java 中判断字符是否为big5码_【转载】判断一个字符是西文字符还是中文字符

    转载:http://blog.chinaunix.net/u2/70445/showart_1133335.html 一.判断一个字符是西文字符还是中文字符    大家知道西文字符主要是指ASCII码 ...

  3. Java中的字符集编码入门Java中的增补字符

    转载自:http://jiangzhengjun.iteye.com/blog/512083 Java中的字符集编码入门Java中的增补字符 博客分类: 字符集编码 Java Java号称对Unico ...

  4. java 转码%2f%_JS和JAVA中常用的编码转码函数

    js中escape,encodeURI,encodeURIComponent函数和unescape,decodeURI和decodeURIComponent函数的功能 1.escape方法对Strin ...

  5. 字符串在Java中_字符和字符串在Java中的旅程

    以下是个人对java中字符和字符串的见解,如有疏漏之处,还请不吝赐教. 下面通过一个简单的程序来说明字符和字符串在Java中的旅程. 以字符 ' 中 '为例, 它的GBK编码是2个字节:0xd6d0, ...

  6. java字符乱码问题_怎么解决java中的字符乱码问题

    怎么解决java中的字符乱码问题 发布时间:2020-06-28 14:53:09 来源:亿速云 阅读:108 作者:Leah 怎么解决java中的字符乱码问题?相信很多没有经验的人对此束手无策,为此 ...

  7. Java中获取GBK编码汉字的拼音首字母(包括生僻字)

    Java中获取GBK编码汉字的拼音首字母(包括生僻字) 前言 代码 结果 前言 网上关于Java中获取汉字的拼音首字母的方法很多,但大多基于GB2312的汉字所属编码位置判断方法,现有一种基于GBK编 ...

  8. java中的字符个数,增补字符

    char: The char data type is a single 16-bit Unicode character. It has a minimum value of '\u0000' (o ...

  9. java中的字符,字符串,数字之间的转换(亲测)

    string 和int之间的转换 string转换成int  :Integer.valueOf("12") int转换成string : String.valueOf(12) ch ...

最新文章

  1. 2021第12届蓝桥杯省赛 -- 填空题:试题B:直线
  2. mac 上的环境变量配置
  3. Cracer渗透视频课程笔记——基础知识(2)
  4. C++中的类所占内存空间总结
  5. envi最大似然分类_闲谈最大后验概率估计(MAP estimate)amp;极大似然估计(MLE)和机器学习中的误差分类...
  6. Plugin org.apache.maven.plugins:maven-resources-plugin:2.6
  7. easyui的下拉框combobox在包含的iframe页面里点击不能收回解决办法
  8. 阿里架构师的日志:带你快速理解微服务架构;理解微服务架构的核心
  9. 算法学习:最短路径(Floyd、Bellman-ford、Dijkstra)
  10. qpython 3h怎么使用_不思议迷宫M14怎么玩 不思议迷宫M14攻略
  11. 《莫烦Python3基础教程》学习笔记
  12. IDirectXFileData::GetData 在dx9c中没有了
  13. 远程会诊系统加持,长三角(上海)智慧互联网医院有多智慧?
  14. 入侵防御系统_入侵防御系统简介
  15. 全球与中国手持式凿岩机市场供需情况分析及十四五趋势预测报告2022-2027年版
  16. 网页显示高德地图例子
  17. lvgl lv_conf.h文件详解
  18. pytorch TorchScript 简介
  19. CSS基础(13)- 更多的选择器
  20. 改变虚拟导航栏(navigation bar)背景色及图标颜色

热门文章

  1. linux5.8系统设置屏幕长亮,大神为你讲解怎么设置屏幕常亮【突破办法】
  2. HTML 中 a:link ...什么意思
  3. 常见 markdown 数据符号操作
  4. OAuth2.0,CodeChallenge的生成问题
  5. NYOJ 628--小媛在努力【水题】
  6. 单元格下拉全选快捷键_Excel中快速选择数据,这几个快捷键必须学会!
  7. 《挂机游戏制作工具手册》挂机游戏制作工具基础知识
  8. Flash与3D编程探秘(一)- Flash与3D空间
  9. telegram实时翻译bot_有写过 telegram bot 的大佬吗,请问如何让机器人获取自己说的话?...
  10. mysql从库有张表不同步_mysql主从数据库不同步的2种解决方法