为什么 unicode 作为编码包含在 Swift 的字符串 API 中?
Why is unicode included as an Encoding in Swift's String API?
我读了这个 very important blog regarding string encodings。
看完之后我才知道unicode是一种将字符映射为整数码位的标准。这些整数如何存储在内存中是一个完全不同的概念。这就是 .utf8
、.utf16
发挥作用的地方,定义了我们在内存中存储这些整数的方式。
在 Swift String
API 中有一种方法可以为我们提供用于表示各种编码的 String
的数据字节:
func data(using encoding: String.Encoding, allowLossyConversion: Bool = false) -> Data?
此方法的第一个参数是 String.Encoding
类型。此结构 Encoding
的编码声明为:
static let unicode: String.Encoding
现在突然之间,该方法可以使用 .unicode
编码为我提供 String
的数据表示
这实际上与我阅读上述博客后得出的结论相反。它给了我一个字符串的数据表示,即使 unicode 没有提供我如何存储它的细节。
任何人都可以告诉我我在这里缺少什么吗?我现在真的很迷茫。
String.Encoding.unicode
等同于 String.Encoding.utf16
print(String.Encoding.unicode)
print(String.Encoding.utf16)
以上打印:
- Unicode (UTF-16)
- Unicode (UTF-16)
我读了这个 very important blog regarding string encodings。
看完之后我才知道unicode是一种将字符映射为整数码位的标准。这些整数如何存储在内存中是一个完全不同的概念。这就是 .utf8
、.utf16
发挥作用的地方,定义了我们在内存中存储这些整数的方式。
在 Swift String
API 中有一种方法可以为我们提供用于表示各种编码的 String
的数据字节:
func data(using encoding: String.Encoding, allowLossyConversion: Bool = false) -> Data?
此方法的第一个参数是 String.Encoding
类型。此结构 Encoding
的编码声明为:
static let unicode: String.Encoding
现在突然之间,该方法可以使用 .unicode
String
的数据表示
这实际上与我阅读上述博客后得出的结论相反。它给了我一个字符串的数据表示,即使 unicode 没有提供我如何存储它的细节。
任何人都可以告诉我我在这里缺少什么吗?我现在真的很迷茫。
String.Encoding.unicode
等同于 String.Encoding.utf16
print(String.Encoding.unicode)
print(String.Encoding.utf16)
以上打印:
- Unicode (UTF-16)
- Unicode (UTF-16)