からあげの備忘録

ダメ社会人。継続は力。

基礎知識:Unicode

Unicodeとは

世界中のすべての文字を扱うことを目的として作られた符号化文字集合で、アルファベットや記号はもちろん漢字やひらがな等、世界中で使用されている文字の集まりです。
※元々は全ての文字を16ビット(256*256=65536文字)に収めるという方針だったが、現在はさらに拡張されている(21ビット)

BMPと拡張領域

BMP:Basic Multilingual Plane

基本多言語面とも呼ばれ、16ビット時代のUnicodeで既定された文字表

拡張領域

16ビット以降のバージョンで拡張された部分

Unicode文字符号化方式エンコーディング

Unicode文字符号化方式には下記のような種類があります。

UTF-8 :1文字を8~32ビットで表現

ASCIIの文字をそのままUnicodeで使用可能にするために制定された。
そのため、ASCIIに相当する部分は1バイトで、その他の部分は2~4バイトで表す可変長の符号化方式

UTF-16:1文字を16~32ビットで表現

Unicodeに収録されている文字のうち、BMP領域割り当てられているものを16ビットで表し
その他の領域に収録されている文字を4バイトで表します。(サロゲートペアという)
Windowsが採用しているUnicode文字符号化方式

UTF-32:1文字を32ビットで表現

※符号化文字集合文字符号化方式については下記記事を参照

UTF-16をもう少し詳しく

UTF-16には下記の2種類が存在する

エンディアンを識別するために、文書の先頭にはBOM:byte order markが付加される
UTF-16LEでは先頭2バイトに0xFF, 0xFEが付加される
UTF-16BEでは先頭2バイトに0xFE, 0xFFが付加される