未分類

サロゲート(ペア)について

投稿日:2018年2月23日 更新日:

サロゲート(ペア)について

文字コードに関する覚え書きと実験

サロゲートペアは補助文字を UTF-16 で表現したものであって,UTF-8 では使いません(禁止されています)。UTF-8 で扱うのは補助文字であって,サロゲート(ペア)ではありません。

補助文字をUTF-16で実現する方法がサロゲートペア。

 

Oracle Databaseのキャラクタ・セット「UTF8」

Oracle Databaseのデータベース・キャラクタ・セットで使用するUTF-8エンコーディングとしては、UTF8は候補とせず、最新のUnicodeに追随するAL32UTF8を使っておけば問題無し

 

CESU-8

本来UTF-8(RFC 2279 [外部リンク] )では、サロゲートペアは適時解釈してから符号化せねばならない。しかし、このCESU-8は、サロゲートの各ペアを機械的にUTF-8に変換するのみであり、supplementary characterは6バイトで表現される。これはUTF-8の仕様から外れた手法であるばかりか、公害ともなりうる実装である。しかしながら、Oracleはこのような実装をしてしまった。それを正当化するために、CESU-8としてエンコーディング登録をしてしまったのである。

 

サロゲートペア入門

従来のUnicodeでは未使用のだった0xD800~0xDBFF(1024通り)を「上位サロゲート」、0xDC00~0xDFFF(1024通り)を「下位サロゲート」と規定し、「上位サロゲート+下位サロゲート」の4バイトで文字を表現する方法です。「上位サロゲート」も「下位サロゲート」も従来のUnicodeでは未使用の領域なので、以前のUnicodeの文字コードと重複することはありません。このサロゲートペアの導入により1024×1024=1048576字の領域が追加されることになりました。

 

Unicode, UTF についてひっかかったので色々メモ

 

補助文字(追加文字)とサロゲートペア

Unicodeに含まれる文字は、「U+xxxx」という形式のコードポイントで管理されています。コードポイントの範囲はさらに2つに分類されています。1つは、U+0000~U+FFFFの範囲を指す基本多言語面(BMP:Basic Multilingual Plane)、もう1つは、U+10000~の範囲を指す補助(追加)多言語(SMP:Supplementary Multilingual Plane)です。JIS X 0208のすべての文字は基本多言語面に割り当てられていますが、JIS X 0213で追加された文字は、基本多言語面と補助(追加)多言語面のいずれかに割り当てられています。ここで、補助(追加)多言語面に割り当てられた文字を、補助文字(追加文字)と呼びます。

 

CP932(MS932)
CP932
本当は怖くないCP932

 

プログラム内部の文字コードについて

NET FrameworkのString型はUNICODE、実際にはUTF-16エンコードの文字列しか格納できません。それ以外のエンコード方式、文字コードへの(からの)変換は明示的にコードを書く必要があります。
CLRで文字、文字列として認識をして処理をされるのはUTF-16でエンコードされたUNICODE文字だけです。

 

 

 

 

スポンサーリンク

スポンサーリンク

-未分類

執筆者:

関連記事

C++のvector

vector push_backで登録する変数はヒープ領域に確保される。vector変数の解放で、登録された変数もヒープ領域から解放される。 vectorは、デストラクタが呼び出されると、メモリの解放 ...

Oracle文字コード

Oracle文字コードについて ・マルチバイト・キャラクタセット   ・VARCHAR2とNVARCHAR2 CHAR(10) VARCHAR2(10) 10バイト指定。 データベースキャラ ...

Red Hat Linux コマンド集

コマンド一覧と説明 コマンド 説明 ls -al ファイルやディレクトリの情報を表示する。 ps -al 端末操作のプロセスを表示する ps -xl 実行しているプロセスを表示する grep -i 文 ...

Objective-Cについて

  イニシャライザ Objectiv-cにはコンストラクターがありません。 その代わり、オブジェクトをインスタンス化した場合は、直後に init メッセージを送信しなければなりません。 この ...

Xamarin.Formsについて

レイアウトの設定について VerticalOptions / HorizontalOptions プロパティ Xamarin.Forms.Viewクラスの LayoutOptions構造体型 プロパテ ...


プロフィール
管理人です。 業務プログラムに勤しむ人です プロフィール詳細


検索

カテゴリ

アーカイブ