Top
個別メモ
Latest update on 2012年3月5日 (月) at 10:54:46.
【第1454回】 人口学会業績データベースソフト更新(2009年11月7日)
- 5:30起床。眠い。今日はとくに地区の仕事もソフトボールコーチもない。少年野球チームは大会参加するそうだが,人口学会の業績データベース(ただし,通常はトップページから呼ばれるフレーム内で開く)のシステム自体のUTF-8化をしておかなくては,いくら学生アルバイトにデータ更新をしてもらっても使えないので,今日のような時間が取れる日に優先的にやっておくべきと判断し,応援には行かないことにした(とくに手伝い要請も来ていないし)。
- いろいろと試行錯誤していたのだが,昼過ぎに何とかシステムができあがった。いくつかポイントがあったので書いておく。
- 第1のポイントは,どのperlを使うのかということだった。Niiのサーバで気をつけなくてはいけないのは,/usr/bin/perlとか/usr/local/bin/perlが未だに5.0系なことである。Encode.pmを使うには5.8系を使わねばならない。調べてみたら/usr/local/Perl5/perl5.8.9/bin/perlがあったので,先頭行に#!に続いてこれを指定したら,Internal Server Errorは消えた。どうやら,Encode.pmが見つからないというエラーだったようだ。しかし試しに検索したら文字化けするのだった。
- つまり,自分が躓いた第2のポイントはコード変換であった。これまでのシステムは,データベースもcgiもhtmlも日本語エンコードはEUC-JPで,出力されるhtmlコードはiso-2022-jp,つまり7ビットjisだった。昨日書いたようにEUC-JPでは?になってしまう台湾の研究者の人名を正しく扱うには,このうち,最低限,データベースそのものと出力されるhtmlコードの日本語コードをUTF-8にしなくてはいけない。また,その人の名前で検索される状況を考えると,入り口であるhtmlもUTF-8にすべきであろう。残る問題は,cgi,つまりperlのコードをUTF-8にしても大丈夫なのかどうかということだった。最初はcgiはEUC-JPのまま,Encode.pmの機能を使って内部処理をUTF-8にして処理するつもりでコーディングした。コード中の文字列定義はいちいち$ustr=decode('euc-jp',$estr);などとして,内部コードであるutf8に置き換えてから使うのである。しかしダメだった。少し試行錯誤した後,思い切ってシンプルなところから始めようと考え直し,すべてのファイルの日本語文字コードをUTF-8にして一切encode/decodeせずに処理してみた。すると難なく成功したのだった。うーむ,あの試行錯誤は何だったのだろう。
- 昼食後は非常勤講義の準備とシンポジウム口演準備をしようと思う。
- しかし思ったほどは進まないままに夜になってしまった。
▼前【1453】(内部処理がUNICODEなエディタ(2009年11月6日)
) ▲次【1455】(演習5回目(2009年11月9日)
) ●Top
△Read/Write COMMENTS
Notice to cite or link here | [TOP PAGE]