UNICODE UTF-8
UNICODEは色々な言語を扱えるようにするために作られた文字コード体系です。 現在WindowsでサポートするUnicodeは色々とあります
が、 MicrosoftのWordなどでは、2バイトUnicodeを使っています。 2バイトで大量の文字を扱うために、Locale(現在そのPC
で設定されている言語識別コード)とセットでこれらの文字を扱います。 その結果はこれだけインターネットが普及し、ファイルの交換が日常で行われてくる
と、当然それらのファイルは実行されるPCのLocaleに依存してUnicode文字を表示するため、 たとえば中国語(中国大陸の簡体字、 台湾 香
港での正体字)と日本語、韓国語を含んだファイルでは、文字化けを起こします。 もちろん現在のWindowsではこのLocaleをファイルの
Localに設定変更できますが、 毎回毎回こんなことを変更しているわけには行かないでしょう。
UTF-8は、ASCII文字は1バイトで、それ以外は複数バイトで表現します。 漢字は3バイトです、 最長は6バイト?、 ですから文字長は取れるの
ですが、バイト数から文字列の長さを判断することは出来ません。 Googleなどで漢字を入力すると、中国語のページなどが表示されることがあります。
これは文字列がUTF-8で処理されているからです。 もちろんGoogleで表示される順位はGoogleの理屈に基づく勝手でしょうです。 (ずい
ぶん頻繁に変更されているようですね)
UTF-8は、 ASCIIで書かれたプログラムでもC言語のソースでも、なにも変更が必要ありません。 とてもアメリカにとって都合のよい方法です。
しかしUTF-8をサポートするためには、 もちろんプログラムがそれらに対応していなければいけません。 それらのUTF-8環境で入力される文字は
UTF-8である必要があります。 ウェッブブラウザーでは、 送られてくるHTML文章の先頭に、このHTMLファイルが、どの文字コードで書かれてい
るかの情報が含まれています。 それがない日本語のサイトでは漢字が化けるという現象が発生します。 ブラウザーは現在の表示されているHTML文章で使
われている文字コードに対応するするように入力された文字を対応する文字コードに変換して、送り出します。 一部のブラウザーではここで混乱を起こすもの
があります。 送られてきた文字列はサーバーでは、自分の指定した文字列として処理します。 ここで時々逆立ちした話を真剣に論じる方がいます。 サー
バーサイドで受け取った文字列を識別し、内部処理で要求する文字コードに変換するという話です。 これはブラウザーがバッグっているか、自分が送り出す
HTMLファイルで文字コードの指定が抜けているからです。 話が逆立ちです!
なおASCIIだけで書かれたテキストファイルはUTF-8としてUnicesでは認識されます。
日本国内でも、外国人の数はどんどん増えていますね。 本人の名前を管理するのに、カタカナで表記するのもひとつの方法ですが、 国によっては、 標準語
の読み方と方言での発音は全く異なることがあります。 さてUnicodeが使えないとしたら、 この名前さえ入力できません。 アラビア語と中国語と
英語とロシア語と、、、、と複数の言語を自由に表記できるのがUnicodeです。 あと2-3年で、世界はUTF-8に移行するでしょう。 UTF-8
になると日本の漢字でいるところの旧字も当然使えます。 旧字の書体で最近混乱しているようですが、これは中国語での正体字をそのまま利用しているからで
はないでしょうか?
ARAGO for
InternetのUTF-8版はそのような多言語サポートの要求から開発されました。 UTF-8のテキストファイルは、Micorosoftではファ
イルの先頭にBOM(Bite Order Mark)をいれてUTF-8かどうか識別しています。 もちろんNotepadでは、中の文章を読み、
UTF-8か同かも識別しているようです。 これは時々どうもちゃんと動かないようです。
今回のこのUTF-8サポートと同時に、WikiやBlog、ショッピングサイトなど、自己増殖型のサイトを開発しやすくする為に、いくつかの拡張をしています。
拡張された機能
Unicesでよく使われる、実行するスクリプトの中で、そのスクリプトを実行するプログラムを指定する機能
PRGの先頭に次の指示を入れることができる。 (Unices/Windows)
!#/usr/local/aragoi/aragoi.exe
&& aragoi.exeのあるディレクトリを指定する。
これでによってPRGの実行するEXEファイルを判断し実行する。
これとApacheでの指定で、CGIで実行されるプログラムの指定、ブラウザからあるディレクトリのみをアクセスされた時に、何を返すかの指定部分で、
index.html、index.prg,index.cgiと指定すれば、最初に指定されているindex.htmlが返されます。 もしこのindex.htmlがないとindex.prgが返されます。
最初にindex.prgと指定しておけば、index.prgが返されます。
自分のHTMLから、指定したaragoi.exe?indesx.prgでしたら問題がなくaragoiを起動して、 index.prgを実行できますが、 ディレクトリアクセスでは、ここでaragoi.exeを指定できません。
そのための機能が先ほど書いた、!# をスクリプトファイルの先頭に置き、実行するプログラムがあるディレクトリとaragoi.exeを指定します。
このことによってディレクトリアクセスでも、index.prgがaragoi.exeによって実行されることになります。
この機能によって、aragoiで作成された掲示板の内容をGoogleなどに、拾わせることが出来ます。
また、HTMLからaragoi.exeを呼び出すときに、aragoi.exe?some.prgと表記しているものから、このaragoi.exeを隠すことが出来ます。 注意しなければ行かないことは、GETARG()での引数がひとつ少なくなることです。
Shift-JisからのUTF-8への自動変換機能
現在あるデータのDBFをUTF-8に変更しようとすると、どうやってやればいいのでしょうか? 小さいものならばShift-Jisの形式でCOPY
TOでテキスト形式に吐き出し、そのファイルをUTF-8をサポートしたエディタで開き、UTF-8で保存することでUTF-8のテキストファイルが出来
ます。 それをUTF-8版のaragoiのAPPEND FROMで吸い上げることが出来ます。 DBFをaragoiではCREATEできません。
現状ではaragowpuというUTF-8のファイルをUSEできるようにしたARAGOWでCREATEするか、STRUCTURE EXTENDED
で作成するかです。 このやり方でUTF-8用のDBFを作成するためのサイトがあります。
またShift-JisのDBFをaragoiはAPPEND FROMでのみ読み込むことが出来ます。 このときには自動的にShift-JisからUTF-8に変換します。
BOMコードについて、これはUTF-8のテキストファイルをオープンするときに、テキストを読み込んでコードを調べる必要がないように、一部のエディタ
ではBOMを強制的に入れます。 プログラムファイルの先頭にあるときにはaragoiuは無視します。 しかしAPPENF FROMでは一番最初のレ
コードの最初にフィールドにBOMが入り込むことになります。
APPEND FROMでDBFに取り込むテキストファイルには、BOMを入れてはいけません。 ご注意ください。
Apache2ではCGIで出力される文字列の先頭に content-type: text/html が必要です。 これが無いとmalformed headerとしてエラーを返します。
出力されるファイルが <BOM>content-type: text/html とファイルの最初の行がなっているとApache2ではmalformed headeを返します。
aragoiuでHTMLコマンドでファイルを吐き出すときには、このHTMLコマンドで指定するファイルの先頭にあるBOMを自動的に削除します。
もちろんPRGファイルも同じ処理をしています。
UTF-8版 新規および変更された機能
文字処理関数 LEN()、SUBSTR)などでは、バイト単位の処理は出来ません。 すべて文字単位です。
ASC() CHR() はASCII文字のみ対応しています、 UTF-8の文字コードはサポートしていません。
FILTER()コマンドには新しくパラメター4が追加されました。
FILTER()の詳細はARAGOIDOC.HTMLを参照ください。
これはWIKIなどでは ==abc== と指定すると
<bold>abc</bold> と変換するのですが、 パラメータ3は最初の<bold>を、パラメータ4に
< /bold>を対になるように指定します。 これでWikiの文字処理はいとも簡単に 実現します。
現在の掲示板で日付指定しないで最初から表示した時に3回のFILTEER)コマンドが使用されています、 全文字列をそうなめしますので処理時間が当然かかります。
実際問題としては、一般のWikiやBlog、ショッピングサイトなどでここまでのサイズを1ページとして表示することはないでしょうから、 問題にはなりません。
実際にWikiwo書き始めて、保存されるのはHTMLタグされた状態のほうが表示にかかる時間が大幅に短縮されます。
ページ編集の部分でJavaアプレットで書かれたHTMLエディタで編集したほうがはるかに早そうですし、作業性もよさそうですね。
この部分は終了した時点で紹介します。 207/02/21
Wikiなどを作成するときにはCSSも利用されますが、 自己増殖型のウェッブページがこれからの主流になるでしょう。 現在のように、個別のファイル
をアップロードしたりするのではなく、 ブラウザーから直接ページを編集、保存することで作業性が各段に向上するでしょう。 もちろん最初のプログラムが
問題になるでしょう。
aragoiを使ってウェッブページをいくつかのDBFファイルに入れることによって、ずいぶんと保守管理が楽になるかと思います。
画像ファイルなどはaragoiの関数 GETPUT()で処理することが出来ます。
商品
ARAGO for Internet UTF-8 Windows
ARAGO for Internet UTF-8 Unices