perlを使ったcgiを作ろうと思い、こんなプログラムを書いてみたのですが、htmlのタグに囲まれた部分の日本語が文字化けしてしましいます。ファイルの文字列は上手く表示できるのですが…
どうすればいいでしょうか。
文字コード判別をしてみたところ、このプログラム自体はShift-JISで書かれているようです。
開いているファイルはutf-8のようです。
#!/usr/bin/perl
#ヘッダの表示
print "Content-Type: text/html; charset=utf-8\n\n";
print "<html>\n";
print "<head><title>掲示板</title></head>\n";#これが文字化け
print "<body>\n";
print "<input type=\"text\" name=\"mail\" size=\"20\" value=\"\"><br>\n";
print "メッセージ<br>\n";#これも文字化け
my $File = 'party0339.html';
if (-e $File) {
#####@ファイルを開く…上でファイルが存在してることを確認して開けない場合はエラーメッセージ
open(FF,"<:utf8",$File) or die "ファイル:$File を開けない $! \n";
my @FILE = <FF>;
close (FF);
####@読み込んだデータを$Dataに格納する
foreach (@FILE) {
$Data = $_;
print "$Data<br>\n";
}
}
#フッタの表示
print "</body>\n";
print "</html>\n";
exit ();
対策や原因などを教えてくださるとありがたいです。よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> 1についてなのですが、webサーバで解釈できる文字コードはどのようにして調べればいいでしょうか?
サーバーの文字コードはサーバーの管理者にご確認ください。
もし、Windowsでサーバーを実行しているようであれば、utf-8ではなく、ShiftJISである場合が多いです。
> また、文字コードを指定して書くというのは、プログラムを保存する際に文字コードを指定して保存すれば良いのでしょうか。
それでも良いですし、クライアントで記載する際はShiftJISなどのクライアントで認識できるコードで保存し、サーバーに転送の際に文字コード変換をかけるという方法もあります。
No.2
- 回答日時:
原因は多数存在します。
(1) Webサーバーで解釈できる文字コードはutf-8で間違いないですか?
charset=utf-8 の指定がありますが、utf-8で動くWeb環境でしょうか?
(2) ファイル転送時の文字コード
(1) が問題ないとして、Windows環境から転送する際に、正しく文字コード変換ができていますか?
ShiftJISで書いていたら、もちろん文字化けします。
(3) Webブラウザの文字コード認識に問題ないですか?
「自動認識」の場合、ブラウザによってはうまく認識されないことがあります。
別のブラウザで試すか、「自動認識」では無く明示的に指定してみてください。
(4) meta tagを入れてみる。(ブラウザに正しく文字コード認識をさせる)
対処療法かもしれませんが、meta tagで文字コードを指定すると解決することもあります。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
(5) 同様にtitle tagより前に、日本語のコメントを入れることで、回避できることもあります。
この回答への補足
回答ありがとうございます。とりあえず、今調べられる3番、4番、5番について確かめてみました。
1についてなのですが、webサーバで解釈できる文字コードはどのようにして調べればいいでしょうか?
また、文字コードを指定して書くというのは、プログラムを保存する際に文字コードを指定して保存すれば良いのでしょうか。
metaタグを入れてみたのですが、自分の環境ではそれを入れるとページが白紙になってしまうようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlで2次元配列をサブルーチ...
-
vlookupがうまくいきません、教...
-
PerlでUTF-8のファイルの文字列...
-
プログラマーになるにはどうす...
-
perlのrequireの動き方について...
-
perlをバージョンアップしたら...
-
画像が表示でnull; this.src
-
bashスクリプト
-
perlの構文でカンマの意味が分...
-
perlについての質問
-
Windows10においての『Perl』の...
-
Wallpaper Engineでおすすめの...
-
perlのgrepでmyを付けた場合と...
-
Perlで、「が」を、「...
-
perlプログラミング 空白行削除
-
Perlで時間の計算
-
ペプシコーラとコカ・コーラとD...
-
Perlでsprintf("%02d",$month)...
-
openした後、closeしないでプロ...
-
phpとperl
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サーバーのテキストファイルを...
-
XML::Simpleの使い方について
-
perl の grepで 全角カタカナで...
-
IIS の@INC ERRORについて教えて
-
Mechanizeにおけるボタンクリッ...
-
標準入力からデータが読込めない
-
フォームメール確認用ページ
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
「value」に2つの値をセットす...
-
チェックボックスの返す値
-
INPUT TYPE
-
WEBページを強制的に横画面で見...
-
[HTML]プルダウンメニューの横...
-
VB.net データーグリッドビュー...
-
別formのhidden項目を自form値...
-
FORMのselectの選択肢を最初か...
-
VB初心者。小数点以下の表示で...
-
EXCELとの連携
おすすめ情報