字符编码之UTF-8

简介:

博学,切问,近思--詹子知 (http://blog.csdn.net/zhiqiangzhan) 

UTF-8(8 位元 Universal Character Set/Unicode Transformation Format)是一种针对Unicode的可变长度字元编码。
UTF-8 是一种传输编码,他和定长的Unicode编码有如下关系。

UCS (Universal Character Set)
UTF (UCS Transformation Format)

UCS-2字符编码(十六进制数) UTF-8字节流(二进制数)
0000-007F 0xxxxxxx
0080-07FF 110xxxxx 10xxxxxx
0800-FFFF 1110xxxx 10xxxxxx 10xxxxxx

因为网络上大量传输的数据都是ASCII字符,比如HTML标记,XML标记等等,所以UTF-8有很高的传输效率,而且又可以兼顾不同地区的语言编码。
下面的代码描述Unicode和UTF-8之间的转换。

public class UTF { private static final int SINGLE = 0x0080; private static final int DOUBLE = 0x0800; public static String unicode2Utf8(char c){ if(c < SINGLE){ return Integer.toHexString(c); }else if(c < DOUBLE){ int a = c & 0x3F; // 111111 a |= 0x80; int b = c & 0x7CF; // 11111 000000 b <<= 2; b |= 0xC0; return Integer.toHexString(b | a); }else{ int a = c & 0x3F; a |= 0x80; int b = c & 0xFC0; b <<= 2; b |= 0x8000; int x = c & 0xF000; x <<= 4; x |= 0xE00000; return Integer.toHexString(a | b | x); } } public static String utf2Unicode(int u){ int len = Integer.toBinaryString(u).length(); if(len < 8){ return Integer.toHexString(u); }else if(len == 16){ int a = u & 0x3F; int b = u & 0x1F00; b >>= 2; return Integer.toHexString(a | b); }else if(len == 24){ int a = u & 0x3F; int b = u & 0x3F00; int c = u & 0x0F0000; b >>= 2; c >>= 4; return Integer.toHexString(a | b | c); } return ""; } }

目录
相关文章
计算机中存储单位的换算
计算机中存储单位的换算
|
存储 自然语言处理 Java
【elasticsearch】记录ES查询数据结果为空的问题(单个字搜索可以,词语搜索为空)
【elasticsearch】记录ES查询数据结果为空的问题(单个字搜索可以,词语搜索为空)
1070 0
|
10月前
|
人工智能 供应链 数据可视化
跨境电商供应链优化趋势:从智能库存到绿色物流
高效供应链管理是行业发展的关键,涉及原材料采购、生产制造、库存管理、跨境物流和终端交付等环节。通过数据驱动决策、多供应商合作、灵活物流策略、清关合规和技术赋能,可以优化供应链,提升运营效率。
1103 7
跨境电商供应链优化趋势:从智能库存到绿色物流
|
9月前
|
机器学习/深度学习 算法
《深度揭秘!海森矩阵如何左右梯度下降算法》
梯度下降算法是机器学习中寻找函数最小值的核心方法,而海森矩阵作为二阶偏导数矩阵,在优化过程中扮演着关键角色。它不仅帮助判断函数的凸性,确保全局最优解的收敛,还通过优化搜索方向和动态调整学习率,提高算法的稳定性和收敛速度。深入理解海森矩阵,能显著提升梯度下降算法的性能,助力更高效的模型训练与优化。
320 4
|
存储 机器学习/深度学习 编解码
免费的视频增强模型Video2X
免费的视频增强模型Video2X
1204 2
|
小程序 搜索推荐 JavaScript
美食推荐|美食推荐小程序|基于微信小程序的美食推荐系统设计与实现(源码+数据库+文档)
美食推荐|美食推荐小程序|基于微信小程序的美食推荐系统设计与实现(源码+数据库+文档)
484 3
|
存储 JavaScript
Vue中如何在组件销毁时清理定时器?
Vue中如何在组件销毁时清理定时器?
550 1
|
vr&ar C++
基于simulink的风轮机发电系统建模与仿真
本课题使用Simulink实现风轮机发电系统的建模与仿真,涵盖风速模型(基本风、阵风、阶跃风、随机风)、风力机模型及飞轮储能模块。采用MATLAB 2022a进行仿真,详细介绍了各风速成分的数学模型及其组合模型,阐述了风力机从风能捕获到电能输出的全过程,为风力发电系统的设计和优化提供了理论基础和技术支持。
|
JavaScript 前端开发 API
Vue Router【详解】含路由配置、路由定义、路由跳转、路由传参、自动注册路由、路由守卫、页面滚动、监听路由、$route、$router、路由过渡动画等
Vue Router【详解】含路由配置、路由定义、路由跳转、路由传参、自动注册路由、路由守卫、页面滚动、监听路由、$route、$router、路由过渡动画等
3493 1
|
安全 开发者 UED