为什么 unicode 作为编码包含在 Swift 的 String API 中?

Roh*_*ale 2 unicode character-encoding swift swift-string

我阅读了这个关于字符串编码的非常重要的博客

阅读后我意识到 unicode 是将字符映射到整数代码点的标准。这些整数如何存储在内存中是一个完全不同的概念。这就是.utf8,.utf16发挥作用的地方,定义了我们在内存中存储这些整数的方式。

在 Swift StringAPI 中有一种方法可以为我们提供用于表示String各种编码的数据字节:

func data(using encoding: String.Encoding, allowLossyConversion: Bool = false) -> Data?
Run Code Online (Sandbox Code Playgroud)

此方法的第一个参数是 Type String.Encoding。该结构Encoding的编码声明为:

static let unicode: String.Encoding
Run Code Online (Sandbox Code Playgroud)

现在突然该方法可以给我String使用编码的数据表示.unicode

现在这实际上与我在阅读上述博客后得出的结论相反。它给了我一个字符串的数据表示,甚至认为 unicode 没有提供我如何存储它的细节。

谁能告诉我我在这里错过了什么?我现在真的很困惑。

小智 5

String.Encoding.unicode 是相同的 String.Encoding.utf16

print(String.Encoding.unicode)
print(String.Encoding.utf16)
Run Code Online (Sandbox Code Playgroud)

上面的打印:

  • Unicode (UTF-16)
  • Unicode (UTF-16)