技术标签: 扩展 算法 character 语言 transformation pair
UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。值得强调的是,UTF-8只是Unicode的实现方式之一。
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
下表总结了编码规则,字母x表示可用编码的位。
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx当要表示的内容是 7位 的时候就用一个字节:0******* 第一个0为标志位,剩下的空间正好可以表示ASCII 0-127 的内容。
当要表示的内容在 8 到 11 位的时候就用两个字节:110***** 10****** 第一个字节的110和第二个字节的10为标志位。
当要表示的内容在 12 到 16 位的时候就用三个字节:1110***** 10****** 10****** 和上面一样,第一个字节的1110和第二、三个字节的10都是标志位,剩下的所有*的位置都应该根据实际数据加以填充有效数据。
以此类推:
四个字节:11110**** 10****** 10****** 10******
五个字节:111110*** 10****** 10****** 10****** 10******
六个字节:1111110** 10****** 10****** 10****** 10****** 10******
下面的参考文章出自http://blog.csdn.net/xiongchen/archive/2006/04/10/657068.aspx,我觉得总结的很好,尤其是这里有关于Surrogate Pair 的说明,特粘贴至此:
群号: 0~127
|
平面号: 0~255
|
行号: 0~255
|
单元号: 0~255
|
0
|
文章浏览阅读6k次,点赞8次,收藏64次。IT项目管理之第6章 项目成本管理习题之案例分析汇总第6章 项目成本管理习题之案例分析汇总【案例1】【案例1分析】【案例1参考答案】【案例2】【案例2分析】【案例2参考答案】叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!_it项目管理第六章课后答案
文章浏览阅读114次。代码实例#include "modaldialog.h"#include <QMenuBar>#include <QMenu>#include <QAction>#include <QDialog>#include <QDebug>#include <QMessageBox>#include <QFile..._标准 dialog
文章浏览阅读805次。本文首发于微信公众号“Shopee技术团队”。摘要Apache Druid 是一款高性能的开源时序数据库,它适用于交互式体验的低延时查询分析场景。本文将主要分享 Apache Druid 在支撑 Shopee 相关核心业务 OLAP 实时分析方面的工程实践。随着 Shopee 业务不断发展,越来越多的相关核心业务愈加依赖基于 Druid 集群的 OLAP 实时分析服务,越来越严苛的应用场景使得我们开始遇到开源项目 Apache Druid 的各种性能瓶颈。我们通过分析研读核心源码,对出现性能瓶._窗口函数 apache druid
文章浏览阅读3.2k次,点赞2次,收藏18次。贪心算法-背包问题⼀个⼩偷在某个商店发现有n个商品,第i个商品价值vi元,重wi千克。他希望拿⾛的价值尽量⾼,但他的背包最多只能容纳W千克的东⻄。他应该拿⾛哪些商品?0-1背包:对于⼀个商品,⼩偷要么把它完整拿⾛,要么留下。不能只拿⾛⼀部分,或把⼀个商品拿⾛多次。(商品为⾦条)分数背包:对于⼀个商品,⼩偷可以拿⾛其中任意⼀部分。(商品为⾦砂)举例:商品1:v1=60 w1=10商品2:v2=100 w2=20商品3:v3=120 w3=30背包容量:W=50 goods = [(6_背包问题贪心算法python
文章浏览阅读720次,点赞13次,收藏8次。多输入单输出 (MISO) 预测在许多实际应用中至关重要,例如故障诊断、异常检测和预测性维护。本文提出了一种基于格拉姆角场 (GAF) 和卷积神经网络 (CNN) 的 MISO 预测方法。GAF 用于提取输入数据中的局部特征,而 CNN 用于学习这些特征之间的关系并生成预测。该方法在故障诊断任务上进行了评估,实验结果表明其具有良好的预测精度和鲁棒性。引言MISO 预测是指基于多个输入变量预测单个输出变量的任务。它在许多领域都有着广泛的应用,例如故障诊断、异常检测和预测性维护。
文章浏览阅读556次。刚才无意间看到一个数学题目,六位数能被9整除,且各个数字不相同,求最大的六位数减最小六位的数。看到这种题目我想都没想就直接打开了vs,中途遇到了一个问题就是不能有重复的数字,我就用itoa函数将数字转换成字符串然后再判断:bool Check_2(char* str){if (*str == 0) return false;for (char* p = str; *p != 0; p++){ for (char* q = p + 1; *q != 0; q++) { if (*p == *_文本字符串重复识别多少位
文章浏览阅读585次。目录任务描述相关知识编程要求测试说明代码示例任务描述本关任务:对表单进行分组。相关知识为了完成本关任务,你需要掌握fieldset与legend元素来进行表单的分组。对表单进行分组fieldset为表单的一个子容器将所包含的内容以边框环绕方式显示。legend为fieldset边框添加相关的标题示例如下: 健康档案 身高 体重 界面效果如下: 表单分组 编程要求仿照上面的示例,在右侧编辑器中的Begin - End区域内补充代码,具体要求是:_html5中对表单的相关元素进行分组设置
文章浏览阅读261次。在使用Xamarin.Forms经常要编写xaml文件,如果是手写的话是在太蛋疼了,其实是可以开启智能感知的1.Xamarin Studio更新到最新版本,具体什么版本开始的不知道了,5.7以上的肯定可以,使用新技术就别用那种几年前的版本了,要勤更新,Xamarin.Forms并不是一个成熟的技术。2.Visual Stuio还是上面那句话,XForms对VS..._xamarin.form 游戏触摸遥感
文章浏览阅读128次。参考:共享变量通常情况下,一个传递给 Spark 操作(例如 map 或 reduce)的函数 func 是在远程的集群节点上执行的。该函数 func 在多个节点执行过程中使用的变量,是同一个变量的多个副本。这些变量的以副本的方式拷贝到每个机器上,并且各个远程机器上变量的更新并不会传播回 driver program(驱动程序)。通用且支持 read-write(读-写) 的共享变量在任务..._sparkfan 7
文章浏览阅读600次。4、put()函数put()用于从用户空间写入值,如果值被改变,该函数返回1,否则返回0;如果发生错误,该函数返回1个错误码。代码清单17.22给出了1个put()函数的范例。代码清单17.22 snd_ctl_elem_info结构体中put()函数范例1 static int snd_xxxctl_put(struct snd_kcontrol *kcontrol, struct_static int wm8904_adc_osr_put(struct snd_kcontrol *kcontrol, struct snd_ctl_
文章浏览阅读475次。IPtables中可以灵活的做各种网络地址转换(NAT),网络地址转换主要有两种:SNAT和DNAT。SNAT是source networkaddress translation的缩写,即源地址目标转换。比如,多个PC机使用ADSL路由器共享上网,每个PC机都配置了内网IP,PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip,当外部网络的服务器比如网站web服务器接_通信中的masque是什么
文章浏览阅读184次。该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程项目运行环境配置:Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs。项目技术:django + python+ Vue 等等组成,B/S模式 +pychram管理等等。环境需要1.运行环境:最好是python3.7.7,我们在这个版本上开发的。其他版本理论上也可以。2.pycharm环境:pycharm都可以。_基于python的实验室预约管理系统