更新)文字コードについて調べたことをまとめます。異体字UnicodeUnicodeは各国・各文化の文字コードの互換性を解決することを目的に、世界の全ての文字を一つのコードページに統一するという考えで作られた規格。10646」として制定されている。10646と、1987年からXeroxらによって検討され始めたUnicodeを、1991年に統合して制定された。0x10000個ずつを1面(plane)とした、全17面で構成される。Latin)はIEC_8859-1を拡張するように定義されている。(つまりASCIIの拡張となっている)その後は各国・各文化の文字が続き、U+3041でひらがなが、U+4E00で漢字が登場する。U+D800-U+DFFFにはサロゲートペアという後述のUTF-16の仕組みで使うための符号が配置されている。コーランの一節「慈悲あまねく慈愛深きアッラーの御名において。魚の「ホッケ」を表す漢字。日常で使う可能性がある範囲で、比較的後ろ側に収録された漢字の一例。この文字をUTF-8でエンコードすると4バイトになる。画数の多い漢字として有名なビャンビャン麺の「ビャン」。異体字セレクタ「葛飾区」の「葛」と、「葛󠄀城市」の「葛󠄀」は異なる形の文字であるが、Unicodeでは同じU+845B(葛)に収録されている。このような微妙な違いのある文字の表現のために、Unicodeでは異体字セレクタという仕組みが用意されている。U+E0100と2文字続けて書くことで「葛󠄀」という文字を表現することができるようになる。(U+FE0Eが異体字セレクタ)異体字セレクタには以下のような種類がある。ZWJ)は2つの独立した文字を接合する形で表示するために用いる文字。符号位置はU+200D。HTMLでは&zwj;と記述することもできる。アラビアやインドなどの文字のために用意されたものだが、現在は別記事で解説するEmoji(絵文字)にも多用される。ZENJ)という概念も存在する。符号位置はU+200Cで、HTMLでは&zwnj;と記述することもできる。「fl」などデフォルトで合字(fの先端とlが繋がっている)となる文字の並びに対して、「f‌l」というように合字を解除する機能がある。ドイツ語では単語同士を繋げて新たな単語とする複合語が多用されるが、「auf‌lage」=「auf」+「lage」のように「f」と「l」を繋げることが適切でない場合があり、このようなケースに対してZWNJが使われる。中東諸言語の文章に対してもZWNJは使われる。Joinerで結合された文字列は改行によって分⁠断⁠さ⁠れ⁠る⁠こ⁠と⁠が⁠な⁠く⁠な⁠る。(この文中にも使っている)その他組み合わせで表す文字U+3099・U+309Aはひらがな・カタカナと組み合わせることで濁点・半濁点を付与することができる。U+309Aヨーロッパの文字でアクセント記号を表す結合文字が存在する。U+0302その他、言語特有の表現が多数存在する。16)はUnicodeの最も基本的な符号化方式。仕組みは単純で、第0面の文字に対してはUnicodeの符号位置と同じ値の2バイトのbit列がそのままエンコード結果となる。UTF-16の名称はバイト表現が2バイト=16bitであることに由来する。リトルエンディアン・ビッグエンディアンの違いでUTF-16LE・UTF-16BEのバリエーションがある。LEの場合、Unicodeの符号位置の第1バイトと第2バイトを入れ替えた値がエンコード結果となる。ASCII文字も2バイトになるため互換性がない。CEで採用されて以来、Windowsは内部ではUTF-16で文字を処理している。2.0で追加面(第1面以降)を実装するためにサロゲートペアという仕組みが導入され、固定長ではなくなった。サロゲートペア第1面以降(U+10000-)の文字はサロゲートペアという仕組みを使って4バイトで符号化する。