Unicode
世界的にいろいろある文字コードを漢字などざっくり統一したもの 16bitから拡張された21bitぐらいのコード系
JIS X 0221 ISO/IEC 10646 とも基本的に互換
日本語からはJIS X 0208 X 0212 X 0213 などで標準化された文字のほか、絵文字などが収録される ISO/IEC 10646の初版は互換性なし
JISの区点コードと同じく
群 Group 24bit 16777216文字 (ISO/IEC 10646 で使用可能) Unicode 2011年廃止
面 Plane 16bit 65536文字
区 Row 8bit 256文字
点 Cell 1文字
の単位で分けられる
基本の65536文字の基本多言語面に納まらなかったので拡張面が増えている
16bitの面が17ある形でそれ以上は増えない予定 ISO/IEC 10646でも制限がなかったが17面に制限された?
第0面 基本多言語面 Basic Multilingual Plane BMP 第2面 追加漢字面
第3面 第三漢字面
第14面 追加特殊用途面
第15-16面 私用面
バージョン
全体のバージョンと面単位のバージョンがあるようだ ISO 10646と互換性を保ちつつ更新されている
Unicode 1.xは 16bit、ISO/IEC 10646は初期から32bitで進んでいる
Unicode 1.0
Unicode 1.1 FSS-UTF (UTF-8) Unicode 2.0 サロゲートペアで拡張空間が定義 10ffffまで
Unicode 3.0 一般的に利用されはじめたバージョン
Unicode 4.0
Unicode 5.1 異体字セレクタ
Unicode 6.0 携帯絵文字
Unicode 10.0 2017年6月
Unicode 12.0 日本語旧字体
Unicode 14.0 絵文字顔文字
Unicode 15.0 2022-09-14
JIS X 0213 は BMPのほか、追加漢字面を使用する (Unicode 3.2.0 で全項目集録)
Windows XP JIS90
Windows Vista JIS2004
Windows 8 異体字
Windows 8.1 Adobe-Japan-1-7
4.0ぐらいから使える形に
コード体系
UCS ISO/IEC 10646でのコード体系
UCS-4 32bitコード 下位21bitまでしか使わない予定
UCS-2 16bitコード 基本多言語面のみ 廃止?
面区点で分けられる
符号化方式
Unicode版、ISO/IEC 10646版があるが、基本的に同じ
UTF
UTF-7 RFC 1642 → 2152 → 廃止
UTF-8 RFC 2044 → 3629 Unicode 1.1 Appendix A でISO 10646側から取り込まれた? UTF-16 Unicode 2.0のサロゲートペアに対応した形式 ? ISO 10646ではどこから? UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UTF-7 RFC 2152は廃止された Unicode標準ではない
文字コードは基本的にバージョン等が付加されて区別されるがUnicodeは更新が速いので? UTFはバージョンは付加しない
UTF-16, UTF-32では上位バイトと下位バイトの順がどちらでも可能、判別のためにBOM(Byte Order Mark)がある。UTF-8では基本的に必要ないがMicrosoftなどが一時期利用したため混乱したこともあり
濁音、半濁音などは文字と1つのコードで表現することも、別々に表現することも可能
合成済み文字 (が)
基本文字 + 合成文字 (か゛)
全角、半角の区別は基本的にしない、従来のShift_JISの半角カナ、全角アルファベットは互換文字として存在するが利用しないことが推奨される
正規化
文字の表現方法にいくつか派生もあるので検索などで一致するよう正規化方法が4つぐらいある
NFD
NFC
NFKD
NFKC
互換性
UTF-8はUS-ASCII, ISO 8859-1 互換として先頭128文字が同じ 256文字も文字はたぶん同じ
16bitの基本多言語面のみで利用することも考慮されていたり UCS-2 (廃止)
JISとは円記号など一部非互換文字がある
漢字が国ごとに異なる字体になることがあるため異体字セレクタが作られた
合成文字などで扱い方に何パターンかあるNFCとかいろいろ
互換性のない文字同士でコード変換されることで文字化けが起きることも
Unicodeのみで運用できれば文字化け問題はなくなる?
円記号問題などが残っている