未分類

文字コード

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

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

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

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

 

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文字だけです。

 

 

 

 

スポンサーリンク

スポンサーリンク

-未分類

執筆者:

関連記事

RaspberryPiの備忘録

GPIO コマンド 説明 gpio readall GPIOの各ポートの状態を表示 gpio -g mode 14 out gpio -g write 14 0 ピンを出力(out)に設定して、0レベ ...

C#のタスク注意事項

  バックグラウンドタスクで発生した例外 タスクの例外処理に関しては、.NET 4.5で大きな仕様変更が発生している。 バックグラウンドタスクの完了を待機する(awaitキーワードやWait ...

Ubuntuの起動時のエラー対応

エラー確認 コマンド 説明  dmesg  システム起動時のメッセージ確認  cat /var/log/messages   ログファイルの確認  cat /var/log/boot.log  ログフ ...

Red Hat Linux コマンド集

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

Objective-Cについて(続)

  セレクタ Objective-C コンパイラは、メソッドを特定する名前をコンパイル時に内部表現に変換します。 この、メソッドの内部表現をセレクタと呼び、メッセージの送受信の裏側では、このセレクタが ...