Beginner's Rock Official Website

犬土偶日記

海の近くに住みたい

BR日記の使い方

2018年02月24日

inuzon

公開日時: 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ページ。

Info.
公開日時2018年04月03日 07時06分59秒
本文文字数3556文字 (タグ込み)
URLhttps://orca.xii.jp/br/diary/diary.cgi?id=dogoo;date=20180224
Comments

コメントはありません。

コメント投稿フォーム
文字色              
  • 名前を省略すると「名無しBeginner」になります。
  • メールアドレスの入力は任意です。
  • 海外からのコメントスパム対策のため、表示された漢字の読みを必ず入力してください。
  • 本文は必須項目です。投稿する場合は必ず記入してください。タグは使えません。
  • 改行が1つ入力された場合は強制改行として処理されますが、2つ以上連続する改行は段落の終了として処理されます。
  • 本文の行頭に「>」のある文は引用としてマークします。引用でない部分の冒頭に「>」は付けないでください。
  • コメントの削除は管理者若しくは日記執筆者しかできません。書き込む時は注意しましょう。
  • 全部記入が済んだら投稿ボタンを押す前に一度読み直して推敲しましょう。