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 ビット数値です。
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
はエスケープされたダブルクオート文字を含んでいます。定数 dollarSign
、blackHeart
および 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.