UTF是"Unicode/UCS Transformation Format"的首字母缩写,即把Unicode字符转换为某种格式之意。

凡是以UTF开头的字符编码方式都是用来实现编码表示unicode字符的。

UTF-8和UTF-16都是可变长度的编码方式:

  • UTF-8编码方案可能用1、2、3或4个字节表示一个unicode值。
  • UTF-16编码方案可能用2或4个字节表示一个unicode值。

UTF-32是定长的编码方式,用4个字节表示一个unicode值,不用的位全为0。


UTF-8具体编码方式看这篇:https://blog.csdn.net/xuejianbest/article/details/85049748

UTF-16要相对简单些:https://zh.wikipedia.org/wiki/UTF-16

为方便理解上面的编码过程,下面是我用Java实现的辅助平面的unicode字符串表示到utf-16字符串表示的代码:

import java.io.UnsupportedEncodingException;public class Test {public static void main(String[] args) throws Exception {System.out.println(h("\\u277CC")); // \ud85d\udfccSystem.out.println("\ud85d\udfcc"); // ?}public static String h(String s) throws UnsupportedEncodingException {int h1 = 0xd800;int h2 = 0xdc00;Integer value = Integer.valueOf(s.substring(2), 16) - 0x10000;String bstr = Integer.toBinaryString(value);String bstrpad = bstr;for (int i = 20; i > bstr.length(); i--) {bstrpad = "0" + bstrpad;}int i1 = Integer.valueOf(bstrpad.substring(0, 10), 2) + h1;int i2 = Integer.valueOf(bstrpad.substring(10), 2) + h2;byte[] bs = new byte[4];bs[0] = (byte) (i1 >> 8 & 0xFF);bs[1] = (byte) (i1 & 0xFF);bs[2] = (byte) (i2 >> 8 & 0xFF);bs[3] = (byte) (i2 & 0xFF);System.out.println(new String(bs, "utf-16")); // 打印此unicode表示的对应字符。本例子调用时会打印'?'return String.format("\\u%x\\u%x", i1, i2); // 返回其utf-16-be的代理对的字符串表示}
}

对于汉字的编码顺序:

  • Unicode是按部首排序的。
  • GBK编码是按读音排序的。

可以通过这个网站查询unicode编码表:https://unicode-table.com/cn/

如对

编码:UTF-8编码、UTF-16编码规则相关推荐

  1. 字符编码详解——彻底理解掌握编码知识,“乱码”不复存在

    每一个程序员都不可避免的遇到字符编码的问题,特别是做Web开发的程序员,"乱码问题"一直是让人头疼的问题,也许您已经很少遇到"乱码"问题,然而,对解决乱码的方法 ...

  2. python2和3的编码区别_Python2和3字符编码的区别

    1. 字符编码应用程序的三个阶段Python的Python程序执行Python(我再次强调,执行的第一步必须先从硬盘读取文件内容到内存中)文件内容保存在gbk格式,内容为:第一阶段:启动Python解 ...

  3. 关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    出处: https://www.cnblogs.com/haimishasha/p/6117968.html 目录 1.1. ISO-8859-1 通常叫做Latin-1 1.2. GB2312/GB ...

  4. 编码(1)学点编码知识又不会死:Unicode的流言终结者和编码大揭秘

    学点编码知识又不会死:Unicode的流言终结者和编码大揭秘 http://www.freebuf.com/articles/web/25623.html 如果你是一个生活在2003年的程序员,却不了 ...

  5. java 字符串指定编码输出_java对字符的编码处理

    在java应用软件中,会有多处涉及到字符集编码,有些地方需要进行正确的设置,有些地方需要进行一定程度的处理. 1. getBytes(charset) 这是java字符串处理的一个标准函数,其作用是将 ...

  6. linux ubuntu编码转换,Ubuntu中的文件编码转换

    find default -type d -exec mkdir -p utf/{} \; find default -type f -exec iconv -f GBK -t UTF-8 {} -o ...

  7. python可以处理任何字符编码文本_python数据类型、字符编码、文件处理

    介绍: 1.什么是数据? 例:x=10,10是我们要存储的数据 2.为何数据要分不同的类型? 数据是用来表示状态的,不同的状态用不同的类型的数据去表示 1.数据类型 1.数字(整形,长整形,浮点型,复 ...

  8. 以太坊智能合约函数参数ABI编码,动态类型string编码,函数参数的ABI编码, 含c++代码

    官方文档讲得不全也不是很清楚,特别是动态类型string.这里补充. 以太坊的智能合约ABI编码,官方文档和说明:https://solidity.readthedocs.io/en/v0.6.8/a ...

  9. No Code的世界绝无代码!GitHub CEO:编码的未来根本就没有编码

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 [导读]近年来,无代码开发日渐流行.非专业的人员现在也能够参与到开发中了!越来越多的企 ...

  10. java web编码详解_java web 开发 编码问题详解

    java web 开发 编码问题详解 浏览器 IE/FireFox ------------->Servlet容器-------------------------->显示页面 编码   ...

最新文章

  1. 干货丨从基础知识到实际应用,一文了解「机器学习非凸优化技术」
  2. MFC开发IM-第五篇、MFC中改变static字体颜色、大小、背景颜色(自定义类),及手动关联变量的方法
  3. slf4j注解log报错_这个注解一次搞定限流与熔断降级:@SentinelResource
  4. 微信公众号迁移具体内容
  5. html5数组删除相同数据,js数组相减简单示例【删除a数组所有与b数组相同元素】...
  6. Kafka性能测试实例
  7. Timeline Storyteller 现已加入自定义图表库
  8. java更改svg图片颜色_使用Batik绘制SVG图并保存为png图像格式
  9. html自动切换图片特效代码,js图片自动切换效果处理代码
  10. Apollo详解之canbus模块——车辆底层协议调试
  11. 服务器网络连接显示100m,本地连接速度是1G200M的宽带为什么只有100M网速
  12. 单因素方差分析(R)
  13. 合宙 air720 模块通过串口助手连接到阿里云 IOT
  14. java实现火车票查询_java抓取12306信息实现火车余票查询示例
  15. lnmp下配置PHP虚拟主机vhost
  16. LYOI 78 小澳的葫芦
  17. 超全!Tkinter 使用教程!4000字!
  18. P2722 [USACO3.1]总分 Score Inflation
  19. windows installer 窗口一直”正在取消“,无法关闭
  20. Navicat for MySQL 安装(百度云链接)

热门文章

  1. word文档标注参考文献以及标注参考文献出现的直线问题的解决
  2. Oracle与plsqldev,oracle与PLSQLDev的链接問題
  3. ART–KOHONEN neural network for fault diagnosis of rotating machinery(翻译)
  4. Vue笔记18_插槽slot
  5. RxJava 2.0 入门教程
  6. kodi资源_Kodi下载-Kodi官方版下载-PC下载网
  7. 已婚的女性突然开始拼命努力挣钱是为了什么?
  8. 中继服务器发件人显示代发,电子邮件显示代发揭秘
  9. Adobe 正式发布 Flash Player 10 [version 10.0.12.36]
  10. 自动控制原理之系统方块图及其化简