Swift `String.Encoding`:`.unicode` 与 `.utf16`

问题描述 投票:0回答:1

String.Encoding
struct 具有几个与 unicode 相关的实现:

https://developer.apple.com/documentation/swift/string/encoding

  • utf8
  • utf16
    及其修改
  • utf32
    及其修改
  • 突然,
    unicode

这个

unicode
案例是什么,有什么用?这只是某些特定编码(如
utf16
)的别名吗?或者,这可能只是一些伞值,意味着“任何 unicode 编码”,在某些情况下它将评估为
utf8
,而在某些情况下 - 评估为
utf16

swift unicode utf-16 nsstringencoding
1个回答
0
投票

深入研究有关 Swift 中字符串编码的问题,特别是有关 Unicode 和 UTF-16 的问题,我想起了不久前我遇到的一个有点类似的难题。我正在为客户的应用程序开发国际化功能,该应用程序需要支持多种语言,包括普通话等复杂字符的语言。 Swift 的原生字符串处理非常强大,因为它是建立在 Unicode 之上的,这对于处理国际用户群的开发人员来说是一个福音。

这是我的编码冒险中的一个小故事:我的 Swift 应用程序中曾经有一个字符串,它看起来很好,直到我开始操作它 - 提取子字符串,连接,凡是你能想到的。突然,我遇到了这些奇怪的错误,这让我陷入了字符串编码的困境。事实证明,内容中的一些特殊字符被破坏了,因为我无意中在 Unicode 和 UTF-16 之间进行了转换,而没有维护正确的编码。在 Swift 中,字符串是字符的集合,当您处理 Unicode 时,每个字符都可以由一个或多个代码点表示。另一方面,UTF-16 是一种编码形式,其中每个字符可以是一个或两个 16 位代码单元。这些编码如何处理基本多语言平面 (BMP) 之外的字符常常会引起混乱。

我的项目的修复涉及对何时使用 UnicodeScalars 和 UTF16 进行深思熟虑。问题的关键在于认识到字符串操作与编码无关。我必须确保在转换过程中不会丢失信息。这有点让人脸红,但却是关于 Swift 字符串编码复杂性的宝贵一课。这个故事的主旨?在对字符串进行切片和切块时,请始终密切关注您的编码类型,尤其是在与全球受众打交道时。

请记住,虽然 Swift 的 String 抽象很强大,但由于它对 Unicode 和各种编码的支持,它也很复杂。如果您正在进行大量文本处理,请花些时间了解 Swift 如何在内部处理字符串。相信我,它会让您免于许多头痛!

祝您编码愉快,愿您的字符串始终编码良好!

© www.soinside.com 2019 - 2024. All rights reserved.