Unicodeの概略を理解する

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ Unicodeの概略を理解する

本来、UnicodeのUniは一つを表すことなのに、複数のUnicodeがあるみたいですね。

また、最近のPerlではutf8とか、VB2005では内部コードにUnicodeを採用しているとか…。

ということで、Unicodeがよくわからないので、今回、調べてみました。


Unicodeとは

まず、ユニコード(Unicode)はUCS-2(Universal Character Set coded in 2 octets)と称されています。

基本的に世界の文字を2バイト(16ビット)で表現しようとしている(現在では、21ビットの文字集合として規定されている)。

しかし、コードは一つですが、文字符号化方式により、UTF-16,UTF-8,UTF-7,UTF-32等の約4種類があるのです。

そう、あくまでもUnicodeは一つなのです。複数のUnicodeがあるわけではなく、複数の文字符号化方式があるのです。


UTFとは

文字符号化方式(UTF)とは、UCS-2として定義されたコード文字をビット列としてどのように表現するかの方式です。

つまり、コードは1つだけど、それをコンピュータ内部表現では複数の方式で表現することが可能で、Unicodeは実際そうしてるのです。


UTF-16とは

UTF-16は、コード1文字を常に16ビットで表す文字符号化方式で、通常、文書の始めにBOM(Byte Order Mark)を付けます。

BOMがU+FEFFの時はビックエンディアンで、U+FFFEの時はリトルエンディアンになります。

ビックエンディアンはコードと同じバイト列で、リトルエンディアンはコードの上位バイトと下位バイトが入れ替わったバイト列です。

たとえば、コード0x0041(2バイト)の文字は、ビックエンディアンでは0x0041で、リトルエンディアンでは0x4100になります。

ビックエンディアンは、TCP/IPネットワークで採用され、リトルエンディアンはWindowsXP(VB2005)で採用されています。


16ビットに割り当てられなかった漢字は、サロゲートペアと言う拡張仕様で、32ビットで表現する。

しかし、このケースにあたる漢字は、JIS第3第4水準の一部とのことです。


UTF-8とは

UTF-8は、コード1文字を1バイトから3バイトの範囲で符号化する方式です。

1バイトの時はASCIIコードで、3バイトの時は漢字等になります。

IEブラウザや最近のPerlでは、これに対応しています。

つまり、ASCIIコードが多い文書ではUTF-16よりバイト数が少なく、漢字が多い文書では、バイト数が多くなります。


UTF-7とは

UTF-7は、UTF-16で表したUnicodeをBase64で変換して表す方式です。(あまり使われていない)


UTF-32とは

UTF-32は、コード1文字を常に32ビットで表す符号化方式。(現在、ほとんど使われていない)


まとめ

VB2005では、UTF-16のリトルエンディアンが標準。

Perlで漢字を処理するには、UTF-8が時代の流れらしい。


参考

http://ja.wikipedia.org/wiki/Unicode

http://homepage1.nifty.com/nomenclator/unicode/ucs_utf.htm

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。