海の近くに住みたい
話題:Webプログラミングとか
公開日時: 2018年04月03日 07時06分59秒
Beginner's RockやDebugのWebサイトを置いてゐるorca.xii.jp上のPHPの文字エンコーディングをUTF-8にしたい。もつと言へばPerlのCGIもHTMLも全てUTF-8にしたい。大昔はShift_JISが主流だつた。Windowsの標準文字コードみたいな感じだしな。文字化けがよく起こるのでCGIはEUC-JPの方が良いといふ感じだつた。その頃にはUTF-8なんて聞いたこともなかつた。EUCにすら對應してゐないテキストエディタもあつて、PerlのCGIすら無理してShift_JISで書かれたりしてゐた時代。さういふ時代からWebサイトを作つてゐたので、HTMLはShift_JIS、PerlのCGIはEUC-JPだつた。そのうちCGIに合はせる形でHTMLもEUCになつた。その後、かなり遲くPHPを使ひ始めることになつた。無料のWebサーバーではPerlのCGIは使へたがPHPは使へなかつた。有料のレンタルサーバーになつてからPHPを使ひ始めたといふことだ。で、PerlのCGIと同じやうにEUC-JPでPHPを書いてゐた。その頃はCGIもHTMLもEUCだつたので統一するのが望ましいといふ判斷。今の時代はUTF-8にした方が都合が良いだらう。動けば問題無いんだが、これから新しく作るプログラムでも敢へてEUCを使ふといふのは何となく抵抗がある。php.iniでcharsetをUTF-8にしてしまひたい。さうすると過去に作つたPHPプログラムが文字化けしてしまふ。なので、過去のプログラムを全てUTF-8に變換してしまはうといふことになつた。PerlのCGIもUTF-8にしたいところだが、量が多過ぎるので今は取り敢へず放置。量の少ないPHPから。スクリプトファイルの文字コードをUTF-8に變へて保存し直すだけではダメ。プログラムにも手を加へる必要がある。まづ今サーバー上にあるPHPプログラムをピックアップする。調べたら5つしか無かつた。これは樂に終りさうだ、と思つたがそれほどでもなく、意外と苦勞した。header.php、lib.php、testbbs-php.php、a2s.php、inuzon.php。z-data.phpは仕樣變更を追ふのが面倒で消えた。餘所からデータを取つて來る系のやつはメンテが大變だからもうやらない。
取り敢へず全てのPHPプログラムの文字コードをUTF-8Nにして保存。適當BBS PHP版はログをPerl版と共有してゐてログがEUCになつてゐる。ログまでUTF-8にするとPerl版に支障がある。讀み込み時と書き出し時に文字コード變換をするやうにして取り敢へずOK。と思つたがエラーが出た。これを作つた時のPHPのバージョンは5.2ぐらゐだつたかもしれない。今は7.1を使つてゐる。知らないうちにsplitといふ函數が廢止されてゐた。explodeに書き換へて終り。廢止する必要はあつたんだらうか。セキュリティ的な問題とか何か特別な理由でもあるのかな。今後はsplitは使はないやうに氣をつけねばならん。Perlに慣れてゐるから油斷すると何も考へずにsplitを使つてしまひさう。
共通ライブラリ系はほとんどそのままでOK。headerのHTMLは4.01から5に變更する。問題はinuzonだ。a2s.phpがAmazon APIに關する處理をするコア部分のクラスファイル。inuzon.phpはWeb表示とデータ仲介。Amazonは大昔からUTF-8でしかデータの受け渡しをしない。だからinuzonを作る時點で最初からPHPは全てUTF-8で作るといふことにしておけば今こんなに面倒な思ひをしなくて濟んだのだ。Web上のフォームから受け取つたEUCのデータをいちいちUTF-8に變換してAmazonに渡し、返つて來たUTF-8のデータをいちいちEUCに變換して表示してゐる。それらの文字エンコーディング變換部分を行きも歸りも全部削除。さらに長年放置してゐたバグの原因も調べて修正。これが大變だつたが、まあ無事に終つた。同じデータに對してURLエンコードを別々の場所で2囘やつてゐた。キーワード檢索で1つの單語だと檢索されるのにスペース區切りで複數のデータを一度に檢索すると何もヒットしないといふ致命的なバグを、氣附いてゐながら放置し續けて10年以上。我ながら笑へて來る。それを修正した。本來、複數キーワードで檢索できるはずが、どういふわけかできない状態だつた。「B'z」や「Dinosaur」で檢索するとヒットするが、「B'z Dinosaur」だと何もヒットしない。これではまともに檢索できないだらう。「EPIC DAY」とか「IN THE LIFE」とか「The 7th Blues」とかで檢索不可能なんだぜ。アホだろ。そんな状態を10年以上放置した。inuzonで稼ぐ氣なんか全く無かつた。AmazonのAPIを使つてPHPでプログラムを組んでみたかつただけ。組めてなかつたわけだが。そんなのでも何萬圓か貰つた。報酬が5000圓貯まるまでは貰へない仕組みになつてゐて、今3800圓ぐらゐになつてゐるだらうか。あと少しで5000圓貰へる。誰かinuzonで何か買つてくれ。1%の金額が俺の懷に入る。 http://orca.xii.jp/debug/inuzon/inuzon.php
一應自分のPC上では全て問題無く動くやうになつた。だがまだレンタルサーバーにUPするわけにはいかない。Webサーバー上のphp.iniを變更する必要がある。さくらインターネットは設定用の會員ページがあつて、そこでPHPの設定を上書きできるやうになつてゐる。元の設定がどうなつてゐるかは知らない。phpinfo()で調べる必要があるだらう。設定ページに10年以上前に書いた上書き設定がそのまま殘つてゐた。
default_charset = "Shift_JIS"
mbstring.detect_order = auto
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.substitute_character = none
mbstring.internal_encoding = "EUC-JP"
mbstring.language = "Japanese"
magic_quotes_gpc = Off
magic_quotes_runtime = Off
output_handler = mb_output_handler
display_errors = Off
outputがSJISになつてゐる。EUCだと思つてゐた。magic_quotesなんて大昔に廢止されたんぢやないかと思ふ。今こんな設定を殘しておいても全く意味は無いだらう。全面的に見直しが必要だ。まづはPC内とサーバー上のphp.iniを比較する。サーバー上のは直に見れないから、兩方ともphpinfo()で見る。問題無いやうに變更して、修正濟みのPHPファイルを更新する。
FTPでサーバー上のファイルリストを眺めてゐたら知らないファイルが結構あつた。 http://orca.xii.jp/debug/wunko.htm 何だこれ。何に使つたんだらうか。エイプリルフールにでも使つたんだらうか。記憶に無い。
(1.3)孤独のRunaway -Mixture style-、儚いダイヤモンド、今夜月の見える丘に (Alternative Guitar Solo ver.)、パルス、ロビンソン、泣いて 泣いて 泣きやんだら、Brotherhood、黒い青春、juice、The Wild Wind、煌めく人、FRICTION -LAP 2-、波、ALL-OUT ATTACK、I'm in love?。
ギター練習46分、腕立て伏せ400囘、讀書10ページ。
話題:Webプログラミングとか
公開日時 | 2018年04月03日 07時06分59秒 |
---|---|
本文文字数 | 3556文字 (タグ込み) |
URL | https://orca.xii.jp/br/diary/diary.cgi?id=dogoo;date=20180224 |
コメントはありません。