■開発コンセプト
Unicode時代になってもコンテンツを国際化しなければ外国人は来ないっしょ(^o^)/
■想定するユーザ
CGIの受信データにエンコードされたUnicodeが混じっていてお悩みの全ての方へ
◆Google経由の訪問者がどんなキーワードでヒットしたかログで知りたいWebmasterの方
◆Unicodeユーザともネットしたいが、自機の内部データは従来の日本語コードのままに
しておきたいWWWサーバ/データベース管理者の方
◆JavaScript/JScriptのescape()関数の戻り値がUTF-16だったり
従来の日本語コードだったりしてお困りのWebデザイナー/CGI開発者の方
●ソフトウェアの内容
(UTF-16) : "%u"で始まるエンコードデータを日本語テキストにデコードします.
例:
%u30A8%u30AF%u30B9%u30D7%u30Ed%u30FC%u30E9%uFF14 → エクスプローラ4
+title%3A%u6210%u529F%u7387%25100 → +title:成功率%100
(UTF-8) : "%e"で始まる3オクテッドのエンコードデータを日本語テキストにデコードします.
例:
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=utf8&q=2ch%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E9%80%9F%E5%A0%B1+%E3%83%98%E3%83%83%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3&lr=
→ http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=utf8&q=2chニュース速報 ヘッドライン&lr=
http://www.google.co.jp/search?q=Borland+C%2B%2B+%E8%AC%9B%E5%BA%A7&hl=ja&lr=&ie=UTF-8&oe=UTF-8&start=30&sa=N
→ http://www.google.co.jp/search?q=Borland C++ 講座&hl=ja&lr=&ie=UTF-8&oe=UTF-8&start=30&sa=N
●プログラム例:
(UTF-16) :
$s = $ENV{'QUERY_STRING'};
;# UTF-16を含むエンコードデータか否かを識別
if($s =~ /%u[0-9a-fA-F]{4}/){
;# 含まれている場合は simaguni.pl でデコード
require './simaguni.pl';
if(&simaguni'loadbook()){
;# 'euc' 'sjis' 'jis' 'utf16' の何れかを指定
&simaguni'decode(*s,'euc');
&simaguni'unloadbook();
}
}else{
;# 含まれていない場合は jcode.pl 等をご利用下さい
(Decode program for Netscape,IE3 etc)
}
(UTF-8) :
$s = $ENV{'QUERY_STRING'};
$s =~ tr/+/ /;
;# UTF-8を含むエンコードデータか否かを識別
if($s =~ m/%[eE][0-9a-fA-F]{1}%[0-9a-fA-F]{2}%[0-9a-fA-F]{2}%[eE][0-9a-fA-F]{1}%[0-9a-fA-F]{2}%[0-9a-fA-F]{2}/){
;# 含まれている場合は simaguni.pl でデコード
require './simaguni.pl';
if(&simaguni'loadbook8()){
;# 'euc' 'sjis' 'jis' の何れかを指定
&simaguni'decode8(*s,'euc');
&simaguni'unloadbook8();
}
}else{
;# 含まれていない場合は jcode.pl 等をご利用下さい
(Decode program for Shift-Jis,EUC etc)
}
各関数の説明は simaguni.pl のヘッダに書いてあります.
●ファイル(simaguni.lzh)の内容
readme.txt 説明テキスト
simaguni.pl Perlライブラリ
jipang16.txt UTF-16コードブック
jipang8.txt UTF-8コードブック
●配置とパーミッション
simaguni.pl とコードブックを同じディレクトリに置いて下さい.
simaguni.pl 755
jipang16.txt 644
jipang8.txt 644
●使用条件:フリーウェア(カンパ歓迎!)
●転載:自由です. 商用の場合は連絡ください.
●改変条件:改変したファイルを公開する場合は作者宛にご一報下さい.
●更新履歴
Ver1.1(2002/5/13)
・初版公開
Ver2.0b(非公開)
・UTF-8に対応
Ver3.0b(2002/7/19)
・アルゴリズムを改善し、処理速度を向上
・&simaguni'findencodedunicode() を廃止 → プログラム例を参照
Ver3.5(2003/2/14)
・複数の別ディレクトリのCGIからsimaguni.plを共用できるように改変
●開発環境
OS:Windows98
●免責
このソフトウェアによって生じたいかなる障害、損害も作者は
その責任を負わないものとします.
◆お役立ちなリンク集
| |||
| [ |