ひやりはっとIT備忘録    

« SQL Server のロックエスカレーション機能 | メイン | 過去のウイルスに対処できない現代のウィルス対策ソフト »

その他(開発者側) | 何のソフトを入れているとWindowsが重くなるのかリスト(2006年) »

2007年8月31日

●サロゲートペアとは特殊4バイト文字コード

SEが覚えていなくてはならないVistaの機能

 SEが覚えていなくてはならないVistaの機能のひとつに、「サロゲートペア」という特殊文字があります。
《PassJ》「サロゲートペア入門」2007/08/28 【引用】
Windows VistaのJIS2004対応により、WindowsのUnicode環境で使用できる日本語漢字が907字追加されました。しかしこの中には「サロゲートペア」と呼ばれる文字が含まれており、文字を取り扱うには適切な処理が必要になります。
 この場合の「WindowsのUnicode環境」とは、OS内のデータ処理で使用する「UTF-16」の事です。通常ブラウザやメールで使用する「Shift-JIS」や「UTF-8」「EUC-JP」等とは異なるものです。
 また、JISの第1水準や第2水準の文字で事足りていれば問題ないのですが、不幸にして第3水準・第4水準文字表示の必要が生じても、外字にするとかカタカナで誤魔化すとかすれば、・・って今までそうしてきたのですから、普段の生活で第3水準・第4水準文字の必要性はまずありません。
(外字にしなくても、手書き文字をスキャンして、画像取り込みって手もありますね。例えばワープロ文書の本文に文字が出なくとも、備考に画像が埋め込まれていればわかりますし・・(^_^;)
つづく

SE向けのメモ

Windows VistaのJIS2004対応により、WindowsのUnicode環境で使用できる日本語漢字の数が増えました。従来、12238字(Windows XP)だったのが13145字(Windows Vista)になり、907字追加されることになりました。これによって、JIS第3水準、JIS第4水準の漢字がすべてサポートされることになったのです(Windows XPまでは一部サポート)。
ところが、この追加された907字の中には「サロゲートペア」という特殊な文字が304字あり、これらは今までのUnicodeの文字とは扱いが少し違います。
Unicodeの文字コードは2バイトでしたから「4文字(16進数)」で表現していました。サロゲートペアは4バイトなわけですから、文字コードも倍の「8文字(16進数)」になりそうですが、そうではありません。サロゲートペアの文字コードは「5文字(16進数)」で表現します。
サロゲートペアを使用する文字は「1文字=4バイト」ですから、従来のUnicodeの特徴であった「文字数 × 2 = 使用バイト数」の原則が崩れてしまいます。そのため、Unicode対応の開発環境であったとしても、サロゲートペアが絡むと過去に作ったプログラムがうまく動かない場合が出てくると思われます。
おわり

トラックバックURL

このエントリーのトラックバックURL:
http://www.uncle-joe.net/mtengine/mt-tb.cgi/52

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)