Unicode は、異なる表記体系間でのテキストの符号化、表現、処理に関する国際規格です。標準化された形式で多言語の文字を表現し、テキストファイルや Web ページなどの外部ソースと文字を読み書きすることができます。Swift の String 型と Character 型は、このセクションに説明があるように、Unicode に完全準拠しています。

Unicode スカラ

Swift の String 型は、Unicode スカラ値で構成されています。Unicode スカラは、LATIN SMALL LETTER A ("a") が U+0061 で、FRONT-FACING BABY CHICK ("🐥") が U+1F425 というように文字や修飾文字を表現する固有な 21 ビット数値です。

NOTE
Unicode スカラは、U+0000 から U+D7FF まで、または U+E000 から U+10FFFF までの範囲の Unicode コードポイントです。Unicode スカラは、U+D800 から U+DFFF までの範囲である Unicode サロゲートペアのコードポイントを含んでいません。

すべての 21 ビット Unicode スカラが、文字に割り当てられているわけではありません。いくつかのスカラは将来の割り当て用として予約されています。スカラは、上の例にある LATIN SMALL LETTER A や FRONT-FACING BABY CHICK のような、名前を持つ文字が割り当てられています。

文字列リテラルにおける特殊文字

文字列リテラルには、次に示すような特殊な文字を含めることができます。

  • エスケープされた特殊文字 \0(null 文字) \\(バックスラッシュ) \t(水平タブ) \n(ラインフィード) \r(キャリッジリターン) \"(ダブルクオート) \'(シングルクオート)
  • 任意の Unicode スカラで、\u{n} の n が 1-8 桁で、有効な Unicode コードポイントに一致する 16 進数値

次のコードは特殊文字の例です。定数 wiseWords はエスケープされたダブルクオート文字を含んでいます。定数 dollarSignblackHeart および sparklingHeart は、Unicode スカラ形式を示しています。

let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
// "Imagination is more important than knowledge" - Einstein
let dollarSign = "\u{24}"        // $,  Unicode スカラ U+0024
let blackHeart = "\u{2665}"      // ♥,  Unicode スカラ U+2665
let sparklingHeart = "\u{1F496}" // 💖, Unicode スカラ U+1F496

拡張書記素クラスタ

Swift の Character 型のすべてのインスタンスは、拡張書記素クラスタを表現しています。拡張書記素クラスタは、人間が読める文字にするために 1 以上の Unicode スカラを組み合わせた配列です。

例として、文字 é は、1 つの Unicode スカラ é (LATIN SMALL LETTER E WITH ACUTE または U+00E9) として表現できます。一方で、同じ文字をスカラ 1 組で表現することも可能です。標準文字 e (LATIN SMALL LETTER E または U+0065) に続けて、スカラ COMBINING ACUTE ACCENT (U+0301) とします。スカラ COMBINING ACUTE ACCENT は、Unicode を認識するテキストレンダリングシステムによって適用され、e が é に描き変えられます。

両方のケースで、文字 é は、拡張書記素クラスタを表現する Swift の Character 値として表現されています。初めのケースでは、クラスタは 1 つのスカラを含んでいます。次のケースでは、2 つのスカラを含んでいます。

let eAcute: Character = "\u{E9}"                         // é
let combinedEAcute: Character = "\u{65}\u{301}"          // e に続けて  ́
// eAcute は é で、combinedEAcute も é

拡張書記素クラスタは、複雑なスクリプト文字を Character 値として柔軟に表現します。例として、韓国語のハングル音節を構成、分解のどちらででも表現することができます。どちらの表現も、Swift では 1 つの Character 値とみなされます。

let precomposed: Character = "\u{D55C}"                  // 한
let decomposed: Character = "\u{1112}\u{1161}\u{11AB}"   // ᄒ, ᅡ, ᆫ
// precomposed は 한 で、decomposed も 한

拡張書記素クラスタは、(COMBINING ENCLOSING CIRCLE または U+20DD のような)マークに別の Unicode スカラをに入れて Character 値にすることができます。

let enclosedEAcute: Character = "\u{E9}\u{20DD}"
// enclosedEAcute は é⃝

地域標識記号の Unicode スカラを、REGIONAL INDICATOR SYMBOL LETTER U (U+1F1FA) と REGIONAL INDICATOR SYMBOL LETTER S (U+1F1F8) のように組み合わせて Character 値にすることができます。

let regionalIndicatorForUS: Character = "\u{1F1FA}\u{1F1F8}"
// regionalIndicatorForUS は 🇺🇸

Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.