13. ユニコード

ユニコードは、文章の符号化と表現のための標準で、ほぼ世界中の文字体系に対応できます。
UTF-8 は、ユニコードのすべての文字あるいはコードポイントを符号化できる、文字符号化の方法です。

文字は、以下のものから定義されます:
書記素: 視覚的表現
コードポイント: 文字に割り当てられる番号

13.1. ユニコードを使う

ユニコードを使って文字を出力する方法を見てみましょう。
say "a";
say "\x0061";
say "\c[LATIN SMALL LETTER A]";

上の3行のコードはそれぞれ文字を作る別々の方法を示しています:

  1. 文字を直接入力する方法(書記素)

  2. \x とコードポイントを使う方法

  3. \c とコードポイント名を使う方法

では、スマイリーを出力してみましょう。
say "☺";
say "\x263a";
say "\c[WHITE SMILING FACE]";
2つのコードポイントを組み合わせる例です。
say "á";
say "\x00e1";
say "\x0061\x0301";
say "\c[LATIN SMALL LETTER A WITH ACUTE]";

文字 á は、次のように書くことができます:

  • この文字のユニークなコードポイント \x00e1

  • あるいは、 a とアクセント記号のコードポイントの組み合わせ \x0061\x0301

いくつかのメソッドが使えます:
say "á".NFC;
say "á".NFD;
say "á".uniname;
出力
NFC:0x<00e1>
NFD:0x<0061 0301>
LATIN SMALL LETTER A WITH ACUTE

NFC は、ユニークなコードポイントを返します。
NFD は、文字を分解してそれぞれのコードポイントを返します。
uniname は、コードポイント名を返します。

ユニコード文字を識別子として使うことができます:
my  = 1;
++;
say ;