ユニコードの闇
Unicode で全て解決、とは ならなかった
闇要素
BOM を付けないほうをUTF-8Nという
そんなこと聞いたことありません

BOM を付けたUTF-8 のスクリプトファイルでは、処理系によっては実行できないことがある
処理系がBOM をうまく扱えないため、エラーになる
UTF-8-MACでは、「パ」のように濁点・半濁点がついた文字が、「ハ」+「半濁点」という形で保存されている
「パ」1文字で保存するのを
NFC(Normalization Form Canonical Composition)、
「ハ」+「半濁点」の2文字で保存するのをNFD(Normalization Form Canonical Decomposition)という
これウザいよねー

初期に、すべての文字が16bitに収まると考えていたこと
UTF-16がなくなればサロゲートペア分解放できるのに...

JSの文字列処理関数とか基本的にUTF-16のコード単位で扱ってる
半角カタカナ、全角英数字を互換性上の理由で残してしまった
異体字を区別するのにIVSというものが必要で、一般的なフォントはほとんど対応していない