谈谈Unicode编码(2)

NHANES数据库的介绍及使用(一) 一、数据库概况 NHANES(National Health and Nutrition Examination Survey)是一项旨在评估美国成人和儿童健康和营养状况的研究计划,计划始于20世纪60年代初期,是一项针对不同人群或健康主题的调查。 1999年该调查成为一项持续计划,涉及各种健康和营养测量,项目每年调查一个全国代表性的样本,约5000人,这些人群位于全国各县,每年对其中15个县进行访问。 NHANES访谈部分包括人口统计学、社会经济学、饮食和健康相关问题。体检部分包括生理测量、实验室检查等 阅读详情

3、UCS-2、UCS-4、BMP

  UCS有两种格式:UCS-2和UCS-4。顾名思义,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。下面让我们做一些简单的数学游戏:

  UCS-2有2^16=65536个码位,UCS-4有2^31=2147483648个码位。

  UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为256行 (rows),每行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。

  group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。

  将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。

4、UTF编码

  UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:

 

UCS-2编码(16进制)UTF-8 字节流(二进制)
0000 - 007F0xxxxxxx
0080 - 07FF110xxxxx 10xxxxxx
0800 - FFFF1110xxxx 10xxxxxx 10xxxxxx

 

  例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx10xxxxxx。将6C49写成二进制是:0110 110001 001001, 用这个比特流依次代替模板中的x,得到:1110011010110001 10001001,即E6 B1 89。

  读者可以用记事本测试一下我们的编码是否正确。

  UTF-16以16位为单元对UCS进行编码。对于小于0x10000的UCS码,UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0x10000的UCS码,定义了一个算法。不过由于实际使用的UCS2,或者UCS4的BMP必然小于0x10000,所以就目前而言,可以认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案,UTF-16却要用于实际的传输,所以就不得不考虑字节序的问题。

5、UTF的字节序和BOM

  UTF-8以字节为编码单元,没有字节序的问题。UTF-16以两个字节为编码单元,在解释一个UTF-16文本前,首先要弄清楚每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。如果我们收到UTF-16字节流“594E”,那么这是“奎”还是“乙”?

  Unicode规范中推荐的标记字节顺序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。BOM是一个有点小聪明的想法:

  在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。

  这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。

  UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

  Windows就是使用BOM来标记文本文件的编码方式的。

相关推荐

中国传媒大学计算机考研初复试经验贴

中传的计算机专业考研的话主要分为两大学院:计网学院和国重,大部分专业在计网学院。

DoKiDoK的博客 1561

UCS unicode UTF-8 UTF-16 UTF-32

字符集:

不知道要什么,便什么都想要,最后什么都要不到 1331

UE4_UE5 自定义简单水材质(UE材质图表大全1)

首先是材质的颜色节点、粗糙度节点、透明度节点。(1/2/3/4键+右键空白处,可创建一/二/三/四维节点)接着是两个法线波动节点的叠加。最后是折射节点,将fresnel菲涅尔节点连接到材质结果节点的折射输入端。到这里,你基本已经实现了一个波纹流动的水材质。后续我会更新加上海面浪花的水面材质,可以到我的专栏中寻找。有问题随时私信沟通,加油❤。

shanlinhan的博客 1986

UCS-2、UCS-4

汉字常用编码格式 为了在屏幕上显示字符。需要下面几个步骤: 制作所有字符对应的字模。比如大写字母A长什么样。这个模样就是最终显示在屏幕上图形,即我们看到的字符A。为对所有的字符进行编码。比如大写字母A的编码为0x41.由于字符的数量远大于一个字节,所以当字符编码...

gao_zhennan的博客 4158

VS2019手动添加bits/stdc++.h全指南(附解决‘无法打开源文件‘错误)

本文详细介绍了在Visual Studio 2019中手动配置C++万能头文件bits/stdc++.h的完整方法,解决常见的'无法打开源文件'错误。通过分析GCC与MSVC编译器生态差异,提供了纯手动创建和MinGW移植两种可靠方案,并给出详细的步骤、常见错误排查及最佳实践建议,帮助开发者高效配置竞赛开发环境。

weixin_29011395的博客 549

深入Android构建系统:一次修改ro.vendor.build.fingerprint失败的排查与解决记录

本文深入探讨了Android构建系统中修改ro.vendor.build.fingerprint的完整解决方案。通过分析vendor分区的特殊地位和构建指纹的生成路径,提供了三种实战修改方法,并揭示了指纹修改可能遇到的陷阱与对策,帮助开发者彻底解决这一常见问题。

weixin_30621711的博客 144

常用编码详解

摘要:本文在对各种资料整理后详细介绍各种常见编码的转换算法。一、通用字符集(UCS)ISO/IEC 10646-1 [ISO-10646]定义了一种多于8比特字节的字符集,称作通用字符集(UCS),它包含了世界上大多数可书写的字符系统。已定义了两种多8比特字节编码,对每一个字符采用四个8比特字节编码的称为UCS-4,对每一个字符采用两个8比特字节编码的称为UCS-2。它们仅能够对UCS的前64K字

664

1.5 RAG技术栈全景图:LangChain vs LlamaIndex深度对比,选错框架后悔3年,一文帮你选对

摘要:LangChain与LlamaIndex框架深度对比 本文全面对比了RAG领域两大主流框架LangChain和LlamaIndex。LangChain是通用AI应用框架,具有模块化设计和丰富生态;LlamaIndex专为RAG优化,提供开箱即用解决方案。功能对比显示,LangChain在文档加载和Agent支持方面更强,而LlamaIndex在检索策略、向量存储和多模态处理上表现更优。代码示例展示了二者实现RAG的不同方式:LangChain需要更多配置但灵活性高,LlamaIndex则提供更简洁的A

yonggeit的博客 3239

计算机中字符的Unicode编码,简要介绍UCS、UTF、BMP、BOM,字序等名词

 最近在了解软件的国际化问题,看到了一些关于字符编码方面的文章,就收藏了,下面这篇就很不错。--------------------正文-----------------------------------------作者Blog:http://www.fmddlmyy.cn/ 这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于

roger007的专栏 3517

基于STM32L4XX、HAL库的E180-ZG120B ZigBee模块驱动程序设计

/ 频率: 470MHz, SF7, BW125kHz, CR4/5, 功率14dBm。// 检查是否收到完整响应(根据实际情况调整)// 每5秒发送一次。PB0 <---> AUX (可选,用于状态检测)// 实际发送命令可能需要根据模块AT指令集调整。PC13 <---> RESET (可选)// 处理接收到的数据。// 缓冲区满,从头开始。// 其他必要的HAL库初始化代码...// 初始化E180模块。// 启动UART接收。// 如果需要等待响应。// 配置LoRa参数。

zhusl6688的博客 381

基于YOLO26深度学习框架的文档表格识别系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的文档表格识别系统实现方法。系统采用YOLO26网络架构,通过数据预处理、模型训练、检测推理和表格分析四个模块实现高效表格识别。研究详细阐述了数据归一化、增强等技术处理,以及采用迁移学习策略优化模型训练过程。实验表明,该系统能有效识别多种表格结构并生成结构化数据,为文档自动化处理提供了可靠解决方案。

一键难忘的博客 973

细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4 评注

原文在这里 https://www.cnblogs.com/malecrab/p/5300503.html Unicode编码点分为17个平面(plane),每个平面包含216(即65536)个码位(code point)。17个平面的码位可表示为从U+xx0000到U+xxFFFF,其中xx表示十六进制值从0016到1016,共计17个平面。 2. UTF-32与UCS-4 在Unicod...

zhouguoqionghai的博客 1391

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

php2unicode,谈谈php中的unicode和utf8编码

谈谈php中的unicode和utf8编码56789101112131415161718192021222324function utf8_bytes(str){var len = 0, unicode;for(var i = 0; i < str.length; i++){unicode = str.charCodeAt(i);if(unicode < 0x0080) {++len;...

weixin_30810127的博客 182

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python3默认的字符编码和文件编码_unicode和utf8 —— 从一个遍历文件名的脚本,谈谈对Python2和Python3中字符编码差异的理解...

对编码问题一直一知半解,之前也是得过且过,正好有个同事要我帮忙写个脚本,涉及这方面的问题,借这个契机研究了一下.先贴几篇比较好的:1.阮老师的上古文章(07年…),虽然古老但对理解帮助很大,从最基础讲起,逻辑清晰易理解. (ps: 阮老师的博客都有此特点, 在这里推荐一波, 从js到linux, 精通前后端, 是可以当文档看的博客): http://www.ruanyifeng.com/blo.....

weixin_39581896的博客 258

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

unicode和utf8 —— 从一个遍历文件名的脚本,谈谈对Python2和Python3中字符编码差异的理解...

对编码问题一直一知半解,之前也是得过且过,正好有个同事要我帮忙写个脚本,涉及这方面的问题,借这个契机研究了一下. 先贴几篇比较好的: 1.阮老师的上古文章(07年…),虽然古老但对理解帮助很大,从最基础讲起,逻辑清晰易理解. (ps: 阮老师的博客都有此特点, 在这里推荐一波, 从js到linux, 精通前后端, 是可以当文档看的博客):...

weixin_33810302的博客 155

UniCode编码表

Unicode编码则是采用双字节16位来进行编号,可编65536字符,基本上包含了世界上所有的语言字符,它也就成为了全世界一种通用的编码,而且用十六进制4位表示一个编码,非常简结直观,为大多数开发者所接受,特别是十六进制编码后,可以解决汉字在js再编码过程中出现乱码问题,提高解释速度,我们建议在js脚本中使用十六进制unicode编码。 UniCode汉字转换,网上很多,但相对比较好使的比较少,大...

俊墨客 12万+

谈谈对Java中Unicode、编码的理解

谈谈我对Java中Unicode、编码的理解我们经常会遇到编码问题。Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为JAVA里面一个字符(char)就是16位的,而UTF-16正是双字节编码),都是unicode的编码。unicode 的目标就是能支持世界上所有的字符集

soleghost的专栏 2万+

【拓展】谈谈字符编码:Unicode编码与emoji表情编码

“开发过程中,字符编码是我们一定要掌握的知识。本文回顾ASCII标准,并介绍了Unicode和UTF-8、UTF-16方案间的关系,各自是如何存储的,最后介绍了Unicode中emoji...

pingan8787 7502

谈谈Unicode编码

--简要解释UCS、UTF、BMP、BOM等名词  作者:fmddlmyy  这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:问题一:  使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文

Cocowool的专栏 1043

unicode编码表

  unicode编码表 1 unicode编码表 Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字"经"的编码是0x7ECF,注意字符编码一般用十六进制来 表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制 就是32463,UCS-2用两个字节来编码字符,两个字节就是16位二进制, 2的16次方等于65536,所以UCS-2最多能编码65536个字符。 编...

深耕汽车电子:AUTOSAR、电机控制,助力数字汽车 1万+

unicode编码规则

UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体的实现方式可以有多种多样来实现。 UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码

四维空间 3370

python 中文转Unicode编码 & Unicode编码转中文

中文转Unicode编码: text.encode("unicode_escape") exp: # 中文转Unicode编码 text = "中国" res = text.encode("unicode_escape") # 输出结果 res = b'\\u4e2d\\u56fd' Unicode编码转中文: u.decode("unicode_escape") ...

Refrain__WG的博客 3万+

谈谈Unicode编码(1)

问题一:   使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢?   我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode

青云直上不为仙 1151

程序员趣味读物:谈谈Unicode编码 [zz]

程序员趣味读物:谈谈Unicode编码出处:优快云作者:fmddlmyyURL :http://www.pconline.com.cn/pcedu ... er/0505/616631.html2005-05-13 10:05:54这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:

桃花岛 978

java 编码 unicode_java编码-Unicode

【Unicode介绍】百度百科:Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,并且兼容ISO-8859-1。一个字符的Unicode编码是确定的,但是在实际传输过程中,由于不同系统平台的...

weixin_34324618的博客 2757
上一篇: 谈谈Unicode编码(1)
下一篇: Change A Little A Day----->Start From Now
mwumli
博客等级 码龄14年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值