Welcome to Swift (蘋果官方Swift文檔初譯與註解二十)---133~139頁(第二章..本節完)

來源:互聯網
上載者:User

標籤:des   style   使用   檔案   for   io   

Unicode (Unicode碼)

  Unicode是一種國際標準的文本編碼.它的標準表中幾乎包含所有語言的任一字元,並且可以通過擴充檔案或者網頁讀寫這些字元.

  在Swift中,String(字串)類型和Character(字元)類型完全相容Unicode,而且它們也支援非Unicode碼.

Unicode Terminology (Unicode 術語)

  每個Unicode碼都可以用一個或者多個Unicode標量表示.對於一個字元來說,一個Unicode標量都是一個唯一的21位的值(或名稱),例如“ U+0061 表示 LOWERCASE LATIN      LETTER A ("a"),或者U+1F425 表示 FRONT-FACING BABY CHICK ("??").

  當一個Unicode字串以文字檔或其他方式儲存的時候,它們的Unicode標量也會以按照Unicode定義的格式進行編碼.每種格式都使用叫做編碼單元(code unit)的塊來編碼字串.  這些格式裡包括UTF-8格式(使用八位編碼單元編碼一個字串)和UTF-16格式(使用十六位編碼單元編碼一個字串)

Unicode Representations of Strings (字串的Unicode表示)

  在Swift中,提供了幾種不同的存取Unicode形式的字串.

  你可以使用for-in語句來遍曆字串,來存取每個Unicode字元的字元值.

  或者也可以用下面的三種方式中的一個來存取Unicode字串類型的值.

  • UTF-8 code units (使用字串的  utf8 屬性存取)
  • UTF-16 code units (使用字串的  utf16 屬性存取)
  • UTF-21 code units (使用字串的  unicodeScalars 屬性存取)

  下面的每個例子示範了字串”Dog!??”的不同表示方式:

    let dogString = "Dog!??"

UTF-8

  使用utf8的屬性可以按照UTF-8的形式來訪問字串.utf8屬性的類型是UTF8View,它是一組無符號的8位元值(UInt8),每個值代表UTF-8的一個位元組.

    for codeUnit in dogString.utf8 {

        print("\(codeUnit) ")

    }

    print("\n")

    // 68 111 103 33 240 159 144 182

  在這個例子中,codeUnit的前四個十進位的值(68 111 103 33)分別表示字元D,o,g和!.這與ASCII是一樣的.codeUnit的後四個值(240 159 144 182)代表字元DOG FACE的UTF-8  四位元組形式.

UTF-16

  使用字串的utf16屬性,可以按照UTF16方式存取字串. utf16屬性的類型是UTF16View,它是一組無符號16位元值(UInt16),一個值代表UTF16中的一個16位編碼單元:

    for codeUnit in dogString.utf16 {

        print("\(codeUnit) ")

    }

    print("\n")

    // 68 111 103 33 55357 5637

  同樣的,codeUnit的前四個值(68 111 103 33)表示字元D,o,g和!.這些和UTF-8是相同的.

  codeUnit的第十五和第十六個值是DOG FACE 的UTF-16替代表示:U+D83D(十進位值為55357)和U+DC36(十進位值為56374).

Unicode Scalars (Unicode 標量)

  通過unicodeScalars屬性也可以訪問存取字串,這個屬性的類型是UnicodeScalarView.

  每個 UnicodeScalar 都有一個value屬性,它是一個UInt32的值,

      for scalar in dogString.unicodeScalars {

         print("\(scalar.value) ")

    }

    print("\n")

    // 68 111 103 33 128054

  UnicodeScalar的value屬性的前四個值(68 111 103 33)與前面的兩個例子相同,都是表示字元D,o,g和!,最後的值128054(十進位)是十六進位的1F436,表示 DOG FACE.

  通過value屬性,每個UnicodeScalar的值也可以用來構建一個新的字串:

    for scalar in dogString.unicodeScalars {

        println("\(scalar) ")

    }

    // D

    // o

    // g

    // !

    // ??”

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.