文字コードについて
復習用 エンコード/文字コード/マルチバイト文字 についてのノート
- UTF-8はエンコード形式
-
Unicode(UCS2/4)は文字コード
- UCS2/4をエンコードする方式のこと
エンコードと文字コードはちがうの?
-
文字コードはサイズ固定
- UCS2:16bit
- UCS4:32bit
-
エンコード方式がUTF-8
- 1~6byte可変長
- たとえば日本語ではE3で始まることが多いので3byte (E3 xx xxで日本語1文字)
- UTF16/32もあるがあまり使われてない
- UTF8が可変長で1~6byteなのがポイント
-
US-ASCII:英数字などの7bit文字
- 1byteではないことがポイント
- 0000 0000
- 0111 1111
- 最上位ビットが1ならダブルバイト/マルチバイト文字(=US-ASCII(Alpha numeric)文字ではない)
- 2バイト文字とは、文字コードのうち、1文字を2バイトで表現する文字の総称
- 上位ビットが1ならダブルバイト文字/マルチバイト文字で2~6バイトの可変長で表現される
- US-ASCIIであろうが日本語だろうが全部の文字がUTF8でかける
- しかも変更することなくUS-ASCIIも書ける
- UTF8はUS-ASCIIと完全な互換性がありかつ全部の文字をかける
- →とりあえずUTF8とかいとけばいい!🙆♀️
ダブルバイト文字とマルチバイト文字は?
- ダブルバイト文字(DBCS):Unicodeという文字キャラクターコードが主流になる前に存在
- Windows/AIX,Shift_JIS
- HP-UX(Linux系)/EUC
- IBMメインフレーム/EBCIDIC
- これらOSに紐づく文字コードは大体2バイト文字という
- Unicodeできた当初は世界中の文字位は16biitで書けると思われていて、Unicode=16bitであった
- 中国、日本語などJIS規格で文字が増えて16bitではかけない!
- →UCS4誕生
- 文字コードに割り当てるキャラクターコードは32bitまで拡張し、そもそも2バイト文字は無くなった
- UTF8:1~6バイト
- UTF16:2バイト
- UTF32:4バイト
- →複数バイトとして現在はマルチバイトというのが適切!