No:
697
タイトル:
GEAR戦士撫子 新Part691
お名前:
プロフェッサー圧縮
投稿日:
2026/02/25 07:01:51
単表示
返信
UTF-16はUCS-2と互換性があり、予約領域以外の文字コードはほぼ同一です。
その文字コードが割り当てられていない領域を使って、2バイトでは収まりきらない拡張漢字を1文字4バイトとして割り当てたものがUTF-16となります。
◇ ◇ ◇
UTF-16はどのように拡張漢字を定義するか? ですが・・・・・・
ShiftJISのやり方を4バイトに拡張したような仕様になっています。
具体的に言いますとUCS-2で予約領域となっていた0xD800~0xDFFFを二分割し、上位サロゲートと下位サロゲートの2バイトずつとすることで4バイト1文字の文字コードを定義するようになっています。
◇ ◇ ◇
上位サロゲートは0xD800-0xDBFFまでの2バイト値で、この範囲が来た場合は「必ず」次は下位サロゲート2バイトでなければなりません。
もし下位サロゲート(0xDC00-0xDFFF)以外の値(上位サロゲート含む)が来た場合はエラーとなります。
そしてこれらサロゲートはUCS-2では予約領域=単体では文字コードが割り当てられてないので、セットで存在しないとおかしいということになります。
◇ ◇ ◇
このようにASCII以外(0x80-0xFF)を使うことで後続があることを示しつつ、それ自体が文字コードの一部というShiftJISの方式を踏襲するような形になっています。
実際何年も(互換性問題がありつつも)実績を積んできた方式ですからね。
参考にするのは必然と言えるでしょう。