
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で安泰なら、話は早いですが・・・
No.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とかありますけどね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perl で 64ビットint を扱うには?
-
「デバイスは PRN を初期化でき...
-
ユーザー定義関数に#NAME?が返...
-
例外処理のフローチャートの記...
-
モジュールとサブルーチン
-
標準モジュールを削除したい。(...
-
Expat.soが読めない!?
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
Matlabのinline関数
-
perl2exeでuse encodingが使えない
-
perlをバージョンアップしたら...
-
VBでグローバル変数を宣言するには
-
VBAで別モジュールへの変数の受...
-
教えて下さい。
-
Perlの処理待ちコマンド
-
Pg.pmモジュールがロードできない
-
tex についての質問です このコ...
-
perlについての質問
-
CGI.pmはもう古い!?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl で 64ビットint を扱うには?
-
XPathでのワイルドカード指定
-
UserGetAttributesの第7引数が...
-
シフトJISにおけるマッチング
-
自分が作っているプログラムの...
-
ActivePerl UTF-16の変換
-
(秀丸)正規表現で、CSV内金額へ...
-
HTMLのFORMで入力された文字を...
-
機種依存文字定義エラーを回避...
-
16進変換で不具合
-
perl 正規表現 抽出
-
perl 漢字コードの書き方,エン...
-
perlのgrepで日本語の処理でエ...
-
正規表現 \\s が、\\n に、ヒ...
-
例外処理のフローチャートの記...
-
「デバイスは PRN を初期化でき...
-
VBAで別モジュールへの変数の受...
-
ユーザー定義関数に#NAME?が返...
-
エクセルVBAでシートモジュール...
-
Excel VBAでリンク切れをチェッ...
おすすめ情報