スポンサーリンク

旧CGIプログラム(SJIS)をUTF8へ変更する方法

この記事は約3分で読めます。
査定君
査定君

すでに世の中、シフトJISから、UTF-8型式に文字コード体系が変化しています。
しかし、Perl/CGIのプログラムについては、その多くが「shift_jis」で稼働している状況です。ここで、最低限の移行・修正処理により、UTF-8型式へ移行・変換する対応を整理しました。

スポンサーリンク

FileCode Checkerによる文字コード変換

上記のFileCode Checkerは、フリーソフトです。Win10版を導入しましょう。
フォルダ内ファイルを旧文字コード型式から、全てUTF8型式へ一括変換できます。

変換内容

  • 文字コード:UTF8
  • 改行コード:CRLF
  • 元のファイルを置換(事前にバックアップを作成しておく)

変換手順

変換前のファイルについて、全てバックアップを作成しておきます。
FileCode Checkerのツールを起動

txt、cgi、datなど、旧コードの「shift_jis」で書かれたテキストファイルをドラッグ&ドロップして、全てのファイル内容を「UTF8」形式へ文字コードを一括変換します。

jcode.plからjacode.plの導入

cgiプログラムを利用している方なら、jcode.plは聞いたことがある名称でしょう。

  • jcode.plは、UTF8に対応していないため、UTF8に対応する、jacode.plへ置き換えます。
  • jacode.plをネットからダウンロードし、jcode.plと同じ場所に置く
  • cgi内で、jcode.plを指定しているパス名を、jacode.plに置き換える。

jacode.plのメリットは、CGI内の旧jcode.plのロジック箇所が、そのまま使える点です。
jcode.pmモジュールが最新ですが、対応するロジックへ大幅に書き換える必要が出てきます。

CGI内の文字コード指定をSJISからUTF8に変更

HTMLの文字コード指定

下記の指定箇所は全て書換え

  • 変更前:meta charset=”shift_jis
  • 変更後:meta charset=”utf-8″

入力文字の文字コード指定

下記の指定箇所は全て書換え。ロジックの箇所は、jacodeではなく、jcodeとなっている事を確認。

  • 変更前:&jcode’convert(*****,’sjis‘)
  • 変更後:&jcode’convert(*****,’utf8′)

メールヘッダーの文字コード指定

下記の指定箇所は全て書換え

  • 変更前:Content-type: text/plain; charset=ISO-2022-JP
  • 変更後:Content-type: text/plain; charset=utf-8

FTPで対象ファイルをサーバーホストへアップして稼働確認

これで、UTF8形式により、ほぼ文字化けの発生しないCGIが動作する事でしょう。
文字化けが発生した場合、上記の青字部分を確認して、再テストを実施下さい。

これで当分イケるPerlのまとめ

UTF8に変換後、2年ほど経過しましたが、シフトJIS時代に発生していた文字化けも、ほぼ無くなったように思います。2000年代初頭のPerlプログラムも当分稼働できるでしょう。
CMS(PHP)に移植を試みたPerlもいくつか登場しては消えていきました。やはり、純粋な機能に特化したPerlは、そのまま使うのが良いとの結論です。