- PR -

RedHat9 + Perl 環境で日本語の文字化けを回避したい

1
投稿者投稿内容
MS-06R-2
常連さん
会議室デビュー日: 2004/01/17
投稿数: 45
投稿日時: 2004-07-23 16:16
RedHat9 + Apache + Perl 環境を構築しました。

次に Perl構文で作成した pl ファイルを cgi_bin に格納して
Win2000 の IE から呼び出しました。

すると、IE のエンコードが、SJIS となり漢字が正しく表示て
くれません。エンコードを EUC にすると正しく表示されますが、
何度か SJIS→EUC に修正しても SJIS で開いてしまいます。

色々調べましたが、jperl が何やら必要なのでは?
と思っていますが、何をどうしたらいいのか分かりません。
どなたか教えて頂けないでしょうか。

ちなみに pl ファイルは、文字コードは EUC (CRのみ) で作成しました。
okutin
ベテラン
会議室デビュー日: 2003/12/11
投稿数: 98
お住まい・勤務地: 広島
投稿日時: 2004-07-23 16:51
こんにちは。

単純に生成したHTMLファイルの問題だと思いますけど。
head要素内に
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
を記述されてはいかがでしょう。
MS-06R-2
常連さん
会議室デビュー日: 2004/01/17
投稿数: 45
投稿日時: 2004-07-23 17:19
「okutin」さん。
ご回答ありがとうございます。

HTML構文にご指摘のMETA文を入れました。

----- < METAを挿入したPerl文 > -----
#!/usr/bin/perl
use DBI;
print "Content-type: text/html\n\n";
print "<html><head>\n";
print "<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />\n";
print "</head>\n";
print "<body>test</body></html>\n";

正しく動作しませんでした。
META構文を削除すると正しく動作しました。

----- < METAを削除したPerl文 > -----
#!/usr/bin/perl
use DBI;
print "Content-type: text/html\n\n";
print "<html><head>\n";
print "</head>\n";
print "<body>test</body></html>\n";

META を挿入する箇所はどこなのでしょうか。
よろしくお願い致します。
okutin
ベテラン
会議室デビュー日: 2003/12/11
投稿数: 98
お住まい・勤務地: 広島
投稿日時: 2004-07-23 17:31
こんにちは。

挿入する個所はあってますよ。
ただ、「"」は「\"」にしないとダメだと思いますよ。

print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-jp\" />\n";


[ メッセージ編集済み 編集者: okutin 編集日時 2004-07-23 17:38 ]
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2004-07-23 17:35
こんにちは。

httpd.conf に AddDefaultCharset がありませんか?
あるようでしたら、コメントアウトして Apache を再起動してみましょう。
MS-06R-2
常連さん
会議室デビュー日: 2004/01/17
投稿数: 45
投稿日時: 2004-07-23 19:02
こんにちわ(皆様)。

「okutin」さん。
META 構文ですが、ご指摘の通りに修正したら IE のソースは、正しく
指定した META 構文を表示してくれました。

「はゆる」さん。
httpd.conf に AddDefaultCharset が Shift JIS になっていました。
# でコメントにして、Apache を再起動したら正常に動作しました。

結論は、httpd.conf の構文が完璧でなかったようです。
皆様、ご指示いただきまして有難うございました。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-07-23 21:54
Perl から出力する Content-Type の設定を

print "Content-Type; charset=EUC-JP\n\n";

と、キャラクタセットを含むようにすれば、
DefaultCharset の値は適用されなかったと思います。

DefaultCharset はあくまで charset が設定されていないときのデフォルト値なので。
1

スキルアップ/キャリアアップ(JOB@IT)