重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

1-2年ほど前、Perl5.8でソース自体をUTF8N(LF)で記述するようになり、
以下のように書いていました。

use utf8;
use encoding "utf8";
use Encoding;

それからPHPに移り、PHPでは、ソースはEUC-JP、DBもEUC、HTMLに出力する際もEUC-JPで統一していました。

最近またperlを使い出して疑問に思ったのですが、
perlではどのような文字コードで統一すれば一番よいのかということです。

javascriptはUTFだと動作しない端末(ザウルス)などあり、
perlもEUC-JPで統一しようと考えています。

昔、UTF8にこだわったのは、おそらく 「構」という文字は5Cなので、
文字コードによる不具合(ソース,js,cssで)を避けるためと、流行のUTF8にしたと思います。

perlでEUC-JPで文字コード統一させるメリットデメリットが知りたいです。

最近perlで書かれたサイトでHTML出力がShift_JISだったのですが、perlソースもシフトJISかは知りませんが、Shift_JISで統一するデメリットが知りたいです。

あと、WEBでどの文字コードが現在主流で、今後どうなるかも知りたいです。
EUC-JPで安泰なら、話は早いですが・・・

A 回答 (1件)

Perlの昔のバージョン(5.6とかさらにその前)を


考えないでいいのなら、UTF-8で決まりだと思います。その理由は

1) Perl内部でUnicodeキャラクタはUTF-8形式で保持されており、
文字を(バイト毎ではなく)キャラクタごとに扱うのなら
UTF-8形式にしないといけない
#正確にいうとちょっと違う面があります。また、
#全部を自前でやるという選択はなしです。

2) 現状で多言語対応を考えるなら UTF-8以外はほぼ考えられない

3) ShiftJISにあるようなダメ文字問題がない
4) 3)に関連してeuc-jpのように複数文字にまたがった
バイト並びを文字として認識することがない

以上の4点です。

デメリットは、端末側がUTF-8を受け付けない等の場合
コード変換が必要となる

といったところでしょうか。

少なくとも、PerlスクリプトのソースをShiftJISで
記述することは無用の問題を引き起こすことになるので、
可能な限り避けるべきだと考えます。

euc-jpに関してはダメ文字問題はありませんが、
一般にeuc-jpではWindowsで使われる(一般にはShiftJISに
入っていると見なされることの多い)
IBM拡張漢字等を表現することができませんので、
こういったキャラクタを端末が要求するのなら、
euc-jpでは対処できません。
#euc-jpmsとかありますけどね
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!