Unicodeの概略を理解する

Perl初心者のためのPerlノートです!

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

◆ はじめに

本ページは、私がPerlを習得した時(いや習得中)のノートです。

ごく普通の言語(COBOL,C,Java,VB等)を知っている人が、Perlをやり始めるといろいろと悩むことがあります。

それは、

です。

本ページは、そのようなハードルを一つ一つクリアにしていけたらと思います。

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

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

◆ サイト最新情報

◆ コンテンツ

■ 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

◆ おすすめ Perl本

■ 続・初めてのPerl 改訂版

『初めてのPerl』の次ぎに読むと吉です。

結構いいですが・・・、初心者にはちょっと難しいかもです。

■ 結城浩のPerlクイズ

この本には、ちゃいちゃんパパの小話しが載っています(謎)。

ある程度、Perlを理解している人には、たまらない内容になっています。さすが結城先生だな!

結城浩のPerlクイズ

■ 新版Perl言語プログラミングレッスン入門編

実は、私はまだ読んでいませんが、結城先生の本なので良くないはずがありません。

新版Perl言語プログラミングレッスン入門編

■ CGI&Perlポケットリファレンス (Pocket reference)

この本は、非常に役に立ちます。ちょっと調べるのに最適です。サンプルも説明も的を射ています。

CGI&Perlポケットリファレンス (Pocket reference)

■ Perlベストプラクティス

一読の価値有りだと思います。

Perlベストプラクティス

■ プログラミングPerl〈VOLUME1〉

ご存知、Perl本の聖書、ラクダ本(上)です。

■ プログラミングPerl〈VOLUME2〉

ご存知、Perl本の聖書、ラクダ本(下)です。

◆ おわりに

最後に、本ページが、何かのお役に立てれば幸いです。

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

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

人のよいところをどんどん見つけよう