全面解析:Unicode字符集的奥秘与应用

更新:11-17 民间故事 我要投稿 纠错 投诉

大家好,感谢邀请,今天来为大家分享一下全面解析:Unicode字符集的奥秘与应用的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

Unicode标量

本质上,Swift 中的String 类型是根据Unicode 标量创建的。 Unicode 标量是表示字符或修饰符的唯一21 位数字。例如,U+0061 代表拉丁小写字母A 的a,U+1F425 代表FRONT-FACING BABY CHICK。

需要注意的是,并不是所有的21位Unicode编码单元都分配给一个字符,有一些是保留给将来分配的。分配给字符的标量通常都有一个名称,例如上例中的LATIN SMALL LETTER A 和FRONT-FACING BABY CHICK。

注意:Unicode 标量是编码空间[U+0000, U+D7FF] 或[U+E000, U+10FFFF] 中的任何编码单元。 Unicode 不包含代理对,代理对是编码空间[U+D800, U+DFFF] 中的编码单元。

可扩展的字形集群

Swift 中的每个字符实例代表一个单独的可扩展字形簇。可扩展字形簇由一个或多个Unicode 标量组成,可以生成人类可读的字符。

让eAcute: 字符="u{E9}" //

let mergedEAcute: Character="u{65}u{301}" //e 后接

//eAcute 是,combinedEAcute 是

以上是一个例子。字母 可以由单个Unicode 标量(带锐音的拉丁文小写字母E,或U+00E9)表示。然而,字母 也可以用一对标量来表示----- 字母e(拉丁小写字母)后跟字母(组合锐音符号),即U+0065 后跟U+0301。当Unicode 文本渲染系统渲染标量COMBINING ACUTE ACCENT 时,它会以图形方式作用于其前面的标量。将e 更改为。

在上面的两个示例中,字母 由单个字符值表示来表示字素簇。在第一个示例中,簇包含一个标量,在第二个示例中,它包含2 个标量。

可扩展的字符簇增加了灵活性,允许我们使用单个字符来表示许多复杂的脚本字符。例如,韩语字母表中的音节可以表示为一组预分解或分解的元素。以下两个字符在Swift 中表示相同的字形:

让precomposed: 字符="u{D55C}" //

let decomposed: Character="u{1112}u{1161}u{11AB}" //、、

//预组合为,分解后为

可扩展的字符簇使得可以将其他标量作为字符的一部分包围:

让encapsulatedEAcute: 字符="u{E9}u{20DD}"

//封闭的EAcute 是

区域指示符的Unicode 标量可以组合起来生成新字符,例如区域指示符符号字母U(U+1F1FA) 和区域指示符符号字母S(U+1F1F8):

让RegionalIndicatorForUS: 字符="u{1F1FA}u{1F1F8}"

//RegionalIndicatorForUS 是

字符的数量

要获取String中的字符数,可以使用String的count属性:

让异常动物园="考拉,蜗牛,企鹅,单峰骆驼"

print("unusualMenagerie 有(unusualMenagerie.count) 个字符")

//print "unusualMenagerie 有40 个字符

值得注意的是,由于Swift 中使用了Character 的可扩展置信度聚类,字符串的串联或修改并不一定会改变字符串中的字符数。

var word="咖啡馆"

print("(word) 中的字符数为(word.count)")

//"cafe 中的字符数为4"

word +="u{301}" //组合重音符号,U+0301

print("(word) 中的字符数为(word.count)")

//"cafe 中的字符数为4

例如,如果先初始化一个4个字符的新字符串cafe,然后在末尾拼接字符COMBINING ACUTE ACCENT (U+0301),那么结果仍然是4个字符,因为第四个字符从e变成了。

注意:一个可扩展字形组可以由多个Unicode标量组成,这意味着不同的字符或相同的字符代表不同的结果,并且存储它们所需的内存也不同。因此,在Swift 中,字符串中的字符并不都占用相同的内存。这导致在不遍历字符串的情况下无法确定字形组的边界,从而无法确定字符串中的字符数。如果您正在处理特别长的字符串,请注意count 属性需要一个Unicode 标量来迭代整个字符串以确定字符串中的字符数。

文章到此结束,如果本次分享的全面解析:Unicode字符集的奥秘与应用和的问题解决了您的问题,那么我们由衷的感到高兴!

用户评论

刺心爱人i

真没想到字符编码还能这么复杂!

    有10位网友表示赞同!

笑傲苍穹

我一直以为是英文符号更多啊,居然还有这么多语言的字符呢。

    有15位网友表示赞同!

醉枫染墨

学习了解Unicode能让我更好地理解电脑处理文字的过程吗?

    有13位网友表示赞同!

该用户已上天

我的手机不支持所有Unicode字符吗?感觉有些特殊符号显示不了。

    有20位网友表示赞同!

莫阑珊

Unicode在网络安全领域有什么应用吗?

    有15位网友表示赞同!

栀蓝

原来中文的编码也有很多种,之前一直以为是统一的。

    有17位网友表示赞同!

轨迹!

Unicode能兼容未来新语言的出现吗?

    有11位网友表示赞同!

浅嫣婉语

使用Unicode有什么特别好处呢?

    有12位网友表示赞同!

一别经年

我需要学习一些编程知识才能更深入地了解Unicode吗?

    有17位网友表示赞同!

浅笑√倾城

感觉Unicode越来越重要了,全球化趋势下大家都会用到它。

    有19位网友表示赞同!

烟雨离殇

这个名字听起来很高级哈!

    有18位网友表示赞同!

眼角有泪°

学习一点Unicode知识或许对我的工作有所帮助。

    有9位网友表示赞同!

发型不乱一切好办

我还以为UNICODE只是一个简单的小工具呢! Turns out it's pretty complex.

    有16位网友表示赞同!

﹎℡默默的爱

Unicode是不是只有英文使用? 听说很多中文编码都在Unicode里?

    有18位网友表示赞同!

生命一旅程

我感觉Unicode这个词汇听起来就很专业,要慢慢琢磨一下。

    有11位网友表示赞同!

淡写薰衣草的香

有没有什么简单易懂的资源来学习unicode?

    有20位网友表示赞同!

歆久

在使用编程语言的时候需要用到Unicode吗?

    有16位网友表示赞同!

我家的爱豆是怪比i

Unicode可以帮助解决字符显示不一致的问题吗?

    有15位网友表示赞同!

【全面解析:Unicode字符集的奥秘与应用】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:探寻天地间:日月征程之旅 下一篇:2023年度佣金回报率最高的十大购物返利应用排行榜