究竟什么是与编码无关的手段

时间:2016-06-16 08:28:27

标签: string swift

在阅读official Swift document字符串和字符章节时,我发现了以下句子  “每个字符串都由与编码无关的Unicode字符组成,并支持以各种Unicode表示形式访问这些字符

问题编码独立意味着什么?

1 个答案:

答案 0 :(得分:3)

从我对Advanced Swift的阅读中克里斯和其他经历来看,这句话试图传达的东西可以是2倍。

首先,什么是各种unicode表示:

  1. UTF-8 :与ASCII兼容
  2. UTF-16
  3. UTF-32
  4. 右侧的数字表示字符在表示或存储时将占用的位数。

    对于字符,UTF-8需要8位,而UTF-32需要32位。

    但是,可以用1 UTF-32内存表示的中文字符可能并不总是适合1块UTF-16内存。如果角色获得全部32位,那么在UTF-8中它将具有4的计数。

    然后是存储部分。将字符存储在字符串中时,稍后您想要读取它的方式并不重要。

    例如: enter image description here

      

    每个字符串都由与编码无关的Unicode字符组成,并支持以各种Unicode表示形式访问这些字符

    这意味着,您可以通过任何您喜欢的方式撰写String。当读取各种unicode编码格式(如UTF-8或16或32)时,这不会影响表示。

    在上面的示例中可以清楚地看到,当我尝试加载占用24位的日文字符进行存储时。无论我选择何种编码,都会显示相同的字符。

    但是,计数值会有所不同。还有其他要考虑的代码单元和代码点,构成这个字符串。

    For Unicode Encoding variants

    我强烈建议阅读这篇文章,它更深入地介绍了swift中的String api。 Detail View of String API in swift