在阅读official Swift document的字符串和字符章节时,我发现了以下句子 “每个字符串都由与编码无关的Unicode字符组成,并支持以各种Unicode表示形式访问这些字符”
问题编码独立意味着什么?
答案 0 :(得分:3)
从我对Advanced Swift的阅读中克里斯和其他经历来看,这句话试图传达的东西可以是2倍。
首先,什么是各种unicode表示:
右侧的数字表示字符在表示或存储时将占用的位数。
对于字符,UTF-8需要8位,而UTF-32需要32位。
但是,可以用1 UTF-32内存表示的中文字符可能并不总是适合1块UTF-16内存。如果角色获得全部32位,那么在UTF-8中它将具有4的计数。
然后是存储部分。将字符存储在字符串中时,稍后您想要读取它的方式并不重要。
每个字符串都由与编码无关的Unicode字符组成,并支持以各种Unicode表示形式访问这些字符
这意味着,您可以通过任何您喜欢的方式撰写String。当读取各种unicode编码格式(如UTF-8或16或32)时,这不会影响表示。
在上面的示例中可以清楚地看到,当我尝试加载占用24位的日文字符进行存储时。无论我选择何种编码,都会显示相同的字符。
但是,计数值会有所不同。还有其他要考虑的代码单元和代码点,构成这个字符串。
我强烈建议阅读这篇文章,它更深入地介绍了swift中的String api。 Detail View of String API in swift