Unicode是一種用於編碼和表示文本的國際標準。它可以使你能夠用一種標準化的方式表示任何語言中的幾乎任何字符,同時允許從外部來源(文本文件或者網頁)中讀取和寫入這些字符。
Swift的String和Character類型完全符合Unicode標準。他們支持不同種類的Unicode編碼,下面有詳細的描述:
Unicode術語
字符串的Unicode編碼
Swift提供了幾種不同的方式來訪問字符串的Unicode表示。
你可以使用for-in語句遍歷一個字符串,來訪問它的每個字符值(作爲Unicode字符)。這個過程在字符處理一章有詳細的介紹。
也可以通過下面三種與Unicode兼容的表示來訪問一個字符串:
一個由UTF-8編碼單元構成的集合(通過字符串的utf8屬性來訪問)
一個由UTF-16編碼單元構成的集合(通過字符串的utf16屬性來訪問)
一個由21位的Unicode標量值(通過字符串的unicodeScalars屬性來訪問)
接下來的例子,展示了由字符D,o,g,!,構成的字符串的幾種不同的表示(DOG FACE,或者是Unicode 標量 U+1F436)。
UTF-8
通過遍歷字符串的utf8屬性來訪問它的UTF-8表示。這個屬性是UTF8View類型的,由一系列的無符號8位UInt8值構成,每個對應於字符串的UTF-8編碼中的一個字節。
在上面的例子中,前四個十進制的codeUnit的值(68,111,103,33)分別代表D,o,g和!,他們的UTF-8編碼與ASCII編碼是相同的。後四個codeUnit值(240,159,144,182)是DOG FACE(就是那個正方形的方塊)字符的四字節UTF-8編碼。