gpt4 book ai didi

java - String.codePointAt 到底是做什么的?

转载 作者:IT老高 更新时间:2023-10-28 20:55:34 25 4
gpt4 key购买 nike

最近我遇到了codePointAt Java中String的方法。我还发现了其他一些 codePoint 方法:codePointBeforecodePointCount 等。它们肯定与 Unicode 有关,但我不明白。

现在我想知道何时以及如何使用 codePointAt 和类似的方法。

最佳答案

简答:它为您提供从 String 中指定索引处开始的 Unicode codepoint。即该位置字符的“unicode number”。

更长的答案: Java 是在 16 位(又名 char)足以容纳任何存在的 Unicode 字符时创建的(这些部分现在称为 Basic Multilingual Plane or BMP) .后来,Unicode 被扩展为包含代码点 > 216 的字符。这意味着 char 不能再保存所有可能的 Unicode 代码点。

UTF-16 是解决方案:它将“旧”Unicode 代码点存储为 16 位(即恰好一个 char)和所有新的 32 位(即两个 char 值)。这两个 16 位值称为“代理对”。现在严格来说,char 包含一个“UTF-16 代码单元”,而不是过去的“一个 Unicode 字符”。

现在所有“旧”方法(仅处理 char)都可以很好地使用,只要您不使用任何"new"Unicode 字符(或者根本不在乎关于它们),但如果您也关心新字符(或者只是需要完整的 Unicode 支持),那么您将需要使用 实际上 支持所有可能 Unicode 的“代码点”版本代码点。

注意: 一个非常著名的不在 BMP 中的 unicode 字符示例(即仅在使用代码点变体时有效)是表情符号:即使是简单的 Grinning Face 😀 U+1F600 也不能以单个 char 表示。

关于java - String.codePointAt 到底是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12280801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com