code point和code unit(code position)

一文读懂字符与编码 本文介绍了字符编码的基本概念,分为三个部分:1)字符是指用户可见的字母、数字或符号;2)字符编码标准(如ASCII、Unicode)定义字符到编码的映射,Unicode为所有字符分配唯一码位(Code Point);3)字符编码方式(UTF-8/16/32)决定字符如何存储,UTF-8采用1-4字节可变长度以节省空间。文章还解释了Code Unit、组合字符等概念,并对比了不同编码方式的实现原理和特点。 阅读详情

code point有些地方中文翻译为代码点或码点;code unit有些地方中文翻译为代码单元;不知道准不准确,个人感觉似乎有些不恰当,姑且在本文中就直接用英文名吧。

code point  / code position,字符集编码为每个字符(character)指定的一个唯一的整数(integer)。字符编码ASCII包括128个code point,范围是0x00~0x7F;Extended ASCII包括256个code point,范围是0x00~0xFF;Unicode有1114112 个code point范围是0x000000~0x10FFFF。

Unicode code unit是一个特定Unicode字符的编码的位数(bit size)。例如,UTF-8的code unit是8位(8 bits);UTF-16的code unit是16位;UTF-32的code unit是32位;

根据编码,为了表示一个字符(character)可能需要一个或者多个code unit。UTF-16编码code unit的大小是16位。16位能够表示的code point的个数是0xFFFF+1(这个范围叫做BMP(Basic Multilingual Plane,基本多文种平面),这个范围囊括了世界上常用的字符)。为了表示code point超过BMP范围的字符,UTF-16编码使用代理对(surrogate pair)。在UTF-16编码中,任何code point超过BMP的字符都使用两个16位的code unit表示。所以,UTF-16编码中有些字符可能需要两个code unit,数16位code unit将不能正确代表字符的长度。

Java JVM的String类的使用UTF-16的编码方式。Java的String.length()返回字符串中code unit的数量。从JDK 1.5开始可以使用String.codePointCount(int beginIndex, int endIndex)获取字符的个数,它会把一个代理对视为是一个字符。

看一个代码吧:

public class StringTest {
    public static void main(String[] args) {
        String s = "\u0041\u00DF\u6771\uD801\uDC00";
        System.out.println("length:" + s.length());
        System.out.println("codePointCount:" + s.codePointCount(0, s.length()));
    }
}

代码的运行结果:

length:5
codePointCount:4

明白了String.length()和String.codePointCount(int beginIndex, int endIndex)的功能,应该就明白为什么会有这个结果了。

【python股票价格预测】基于LSTM(长短期记忆网络)的股票价格预测(附python代码) 阅读详情

相关推荐

Robust MPC 4 (鲁棒&随机 MPC)

Robust MPC

weixin_44299806的博客 2737

代码点(Code Point)和代码单元(Code Unit)

代码点(Code Point):Unicode是属于编码字符集(CCS)的范围。Unicode所做的事情就是将我们需要表示的字符表中的每个字符映射成一个数字,这个数字被称为相应字符的码点(code point)。例如“严”字在Unicode中对应的码点是U+0x4E25。 代码点是字符集被编码后出现的概念。字符集(Code Set)是一个集合,集合中的元素就是字符,比如ASCII字符集,其中的字符...

GeekLee的博客 5849

Linux基础——“C语言高级编程” C语言中的细节你真的知道吗?

文章目录GCC简介 GCC简介 gcc 所支持后缀名解释 .c c原始程序 .C / .cc /.cxx C++原始程

weixin_44278698的博客 2511

代码点(code point)和代码单元(code units)

1. 解释一 char:Java中,char类型为16个二进制位,原本用于表示一个字符。但后来发现,16位已经不够表示所有的字符,所以后来发展出了代码点表示字符的方法。 代码点(code point):是指编码字符集中,字符所对应的数字。有效范围从U+0000到U+10FFFF。其中U+0000到U+FFFF为基本字符,U+10000到U+10FFFF为增补字符。 代码单元(

SANGF 7358

初识Renode

1. 简介 Renode是Antmicro公司发布的一个开发框架,使得开发人员通过模拟物理硬件系统(包括CPU、外围设备、传感器、环境以及节点之间的有线或无线介质),加速物联网和嵌入式系统的开发。它可在PC上通过软件对嵌入式设备进行模拟,可模拟Cortex-M、Cortex-A、RISC-V和其他CPU,并可模拟外设以及各种通信总线和接口。其指令模拟器使用C语言开发,外设模拟器使用C#语言开发,测试及输出层面的内容则用python编写。 Renode官网:Renodehttps://renode.io/

牧羊女 5295

避坑指南:STM32CubeMX配置SDIO4bit模式时为什么卡在HAL_SD_ConfigWideBusOperation?

本文深入分析了使用STM32CubeMX配置SDIO 4位模式时,程序在HAL_SD_ConfigWideBusOperation函数处卡死的常见问题。文章从硬件连接、CubeMX配置、初始化序列及HAL库底层实现等多个维度剖析根源,并提供了从初始化流程优化到增强代码鲁棒性等实战解决方案,帮助开发者彻底解决这一棘手难题。

pca5navigator的博客 825

五分钟带你了解码点与代码单元

1 Unicode Unicode俗称万国码,在20世纪80年代开始启动统一工作时,人们认为两个字节的代码宽度足以对世界上各种语言的所有字符编码,并有足够的空间留给未来扩展。在1991年发布了Unicode1.0,当时仅占用了65536(两个字节)个代码值中不到一半的部分。 奈何中华文化博大精深,使得Unicode字符超过了65536个。现在,16位的char类型已经不能满足描述所有Unicode字符了。 2 码点(Code Point) 码点是指与一个编码表中的某个字符对应...

天才小熊猫的博客 2258

OpenVPN 新增 windows 客户端

虚拟私人网络(Virtual Private Network,简称VPN)是一种网络技术,它允许用户通过公共网络(如互联网)建立一个安全的连接通道。本文介绍如何添加 windows 客户端。

利昂的技术存档 3773

字符集与编码(五) 代码单元及 length 方法

本文讲述了 Unicode 中的代码单元这一概念, 并以 java 为例, 阐述其对 string.length 方法的影响, 并结合 junit 做了一些具体的测试.

Just do IT 469

Open-AutoGLM 实战:手把手教你用 AI 操作手机「喂饭教程」

Open-AutoGLM 是一个由智谱AI开源的手机操作智能体框架,由手机端智能助手框架Phone Agent和9B大小的模型AutoGLM-Phone-9B组成,借助ADB自动执行点击、滑动、输入等操作——用户只需用自然语言描述任务,系统便能自动规划并完成整个操作流程。

blues_C的博客 1267

UFS总体介绍及FPGA开发

通过实现UFS的主控制器、设备控制器等组件,我们可以在FPGA上进行UFS开发,并实现高速数据传输和低功耗特性的存储解决方案。物理层负责传输物理信号,数据链路层提供数据包的传输和错误检测功能,传输层处理数据包的分段、重组和重传,逻辑层管理设备和主控制器之间的命令和数据传输,文件系统层负责文件管理和数据存储。在本文中,我们将介绍UFS的总体架构和特性,并探讨如何在FPGA上进行UFS开发。这些组件的实现涉及到UFS协议的具体细节和硬件平台的特性,因此需要参考UFS协议规范和FPGA开发平台的相关文档。

PodProgram的博客 2137

一次性搞清楚unicode、codepoint、代码点、UTF

最近在处理字符过滤,重新研究了下字符、unicode和代码点的相关知识,首先要说一下编码的基本知识unicode unicode unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等。计算机采用八比特一个字节,一个字节最大整数是255,还要表示中文一个字也是不够的,至少需要两个字节,为了统一所有的文字编码,unicode为每种语言中的每个字符设定了统一并且唯一的二进制编码,...

qlql489的专栏 2万+

高通Camx功能feature分析之一:remosaic功能导通

本文详细介绍了S5K3P9S传感器前置场景中SW Remosaic功能的实现流程。首先需在sensorxml中确认支持SW Remosaic类型,并集成remosaic相关库文件(libremosaic_wrapper.so等)。核心实现包括:初始化阶段调用InitFrontSamsungRemosaic();执行线程DeferFrontInitThread()读取校准数据;通过DoSamsungRemosaic()执行remosaic算法处理;最后在析构函数中调用DeinitFrontSamsungRem

1700

code point,code unit

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33730836的博客 224

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

code unit和code point

一个完整的Unicode字符叫代码点/CodePoint,而一个Java char 叫代码单元code unit; string对象以UTF-16保存Unicode字符,需要用2个字符表示一个超大字符集汉字,这种表示方式为 Sruuogate,第一个字符叫Surrogate High,第二个就是Surrogate Low 判断一个char是否是Surrogate区的字符,用Charact

张润东的博客 633

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Code Unit 和 Code Point 初步理解

Code Unit 每个Code Unit占两个字节。(一个字节是8个比特,所以一共要用16个比特位来表示一个Code Unit。) Code Unit的范围在 \u0000~\uFFFF之间。16进制的FFFF转换为10进制=15*16^0+15*16^1+15*16^2+

40岁后学编程 1254

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

代码点(code point)和代码单元(code unit)

Unicode        是世界通用的字符编码标准。它包括字符集(包含来自世界各国各地的语言、文字)和编码方案(将每个字符唯一映射到一个二进制编码);比如:总共有 A-Z[字符集] 26个字符,使用0-25来进行编码,即A-0,B-1…[映射关系]。   这样以后,0-25每个编码都是一个code point,即码字;如何将...

qq_43419714的博客 1035

char、code point和code unit的区别

char:Java中,char类型为16个二进制位,原本用于表示一个字符。但后来发现,16位已经不够表示所有的字符,所以后来发展出了代码点表示字符的方法。 代码点(code point):是指编码字符集中,字符所对应的数字。有效范围从U+0000到U+10FFFF。其中U+0000到U+FFFF为基本字符,U+10000到U+10FFFF为增补字符。 代码单元(code unit):对代码点进...

Move on 557

JavaScript字符串长度[String].length以及码元[Code Point]和码点[Code Unit]出现的问题的详解

JavaScript字符串长度[String].length以及码元[Code Point]和码点[Code Unit]的详解码元,码点出现的问题码元(Code Point):我们将一个==16位==的二进制编码叫做一个码元码点(Code Unit):我们将某个==文字对应的二进制数字==叫做码点由于码元,码点产生的问题---[string].length运行代码打印出: ==1 true...

一只勤劳的二哈的博客 1031

码点(code point)和代码单元(code unit),以及String对象中操作码点和代码单元

一个码点是信息原子的单元。文本是一连串的码点。每一个码点是一个由标准的Unicode编码规定的数字; 一个代码单元是一个用来存储编码码点的一部分的单元。在UTF-8中,一个代码单元是8位;在UTF-16中,一个代码单元是16位。 单独的一个代码单元可能代表一个完整的码点,也可能是一个码点的一部分。 例如,一个雪人字符(☃),是一个Unicode码点,也就是一个Unicode编码所代表的符号,在UT...

hefrankeleyn的博客 7980

unicode、UTF-8、UTF-16、UTF-32、code point、code unit、Byte Order Mark(BOM)

最近看到有关于code point和code unit的书,看得很模糊就Google了一下,看到一篇很不错的文章,写的非常详细(除了UTF-16的部分内容我没有看懂,但是意思领会了)。现在就我的理解做一些简单的说明,具体内容请查阅原文。 字符集就是字符的集合,编码字符集是一个字符集,它为每一个字符分配一个唯一的数字。代码点是指可用于编码字符集的数字。字符编码方案是从一个或多个编码字符集到一个

Demo Blog 2195

JAVA 内存中的编码方式_Java内存中的文本编码

1、编码简介1.1 概念简析:字符、字符集、编码字符集、Code Point、Code Unit和字符编码格式首先要弄清楚字符、字符集、编码字符集、Code Point、Code Unit和字符编码格式等这些概念。A character is just an abstract minimal unit of text. It doesn't have a fixed shape (that wou...

weixin_42098759的博客 835

数据库架构的升级和变更

U+1F468 (?)对应 7 个Code Point。A:有两个原因:一是为了与ASCII兼容,ASCII只支持了128个字符编码,在UTF-8编码中,前128位与ASCII编码相同;当以UTF-8方式编码时,0x0301值超过了128,需要按UTF-8格式拆分为0xCC,0x81,所以表示为:0x65,0xCC,0x81。

YKq9z5eEg的博客 698

掳吴恩达深度学习课程一:神经网络和深度学习 第三周:浅层神经网络 课后作业和代码实践h

U+1F468 (?)对应 7 个Code Point。A:有两个原因:一是为了与ASCII兼容,ASCII只支持了128个字符编码,在UTF-8编码中,前128位与ASCII编码相同;当以UTF-8方式编码时,0x0301值超过了128,需要按UTF-8格式拆分为0xCC,0x81,所以表示为:0x65,0xCC,0x81。

asafasgascafa的博客 669
上一篇: Kafka官方文档中文版
iPaperMan
博客等级 码龄12年 2粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值