WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:文字が化ける

0:[投稿] アッツー [2006/03/20 19:54 ] [環境:IE6,WIN XP linux cgi perl]

この間Perlで文字が化けて実行できないで投稿したものです。
サーバー(Linux)にcgiをおきそのCGIを実行してみた所
いちいちエンコードしなくてはいけなくなりました。
エンコードして直してもまた(cgiは掲示板なのですが)
送信したりするとまた文字化けしてしまいます。
どうすれば文字化けしなくなるでしょうか?
ちなみにEUCで保存して改行はLFです。
クライアントからみるとです。
クライアントはWin xpです。
よろしくお願いします。


1:[質問] アッツ〜 [2006/03/21 00:23 ]

<meta http-equiv="Content-Type"content="text/html; charset=EUC_JP">
これを入ればいいことがわかりました。
しかしシンタックスOKなのに
この行をいれたとたんサーバーエラーになってしまいます。
なぜでしょうか?


2:[回答] ミツ [2006/03/21 01:35 ]

その<meta>はhttpヘッダの代用ですので、まずはhttpヘッダを直してください。
http://www.ne.jp/asahi/minazuki/bakera/html/opinion/perl

で、サーバエラーの件は経験上、シンタックスエラーな場合が多いのですがどうやってシンタックスOKな事を確認したんでしょうか?


3:[質問] アッツ〜 [2006/03/21 20:41 ]

みつさんありがとうございます。
シンタックスOKはコマンドプロンプトでやりました。
上記のリンクでやってみたら
最初の実行場面は大丈夫だったのですが
次に実行すると化けてしまいます。
入れる場所が悪いのでしょうか?


4:[質問] アッツ〜 [2006/03/22 00:34 ]

ミツさんのご指摘どおりやってみたのですが
サーバーエラーになってしまいます。
私のやり方が悪いのでしょうか?

なので
print <<"EOF";

<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN">


<HTML lang="ja">
<head>

<meta http-equiv="content="text/html; charset=EUC_JP">
<title>掲示板</title>
</head>

このような形でやってみましたが結局文字はばけたまま
一時期最初は化けないでよかったときもあったので
また明日やってみます。


5:[回答] 通りがかり。 [2006/03/22 07:31 ]

EUC_JPではなく、EUC-JPでは?

あとは、もう一度スクリプト自体が、EUC-JPになっていることを確認。

こんな、ちょっとしたミスほど、恥かしいものは無いので、自力で解
決できる努力をしましょう。

# 私なんか、人に聞いたことなんて無いですけどね...


6:[質問] アッツ〜 [2006/03/22 21:20 ]

通りがかりさんありがとうございます。
EUC-JPでやってみましたが文字化けしてしまいました。
秀和システムの”PerlCGI大全600の極意”
には確かにEUC_JPになっています。
どこかのサイトでソースを見てみます。


7:[質問] アッツ〜 [2006/03/22 21:23 ]

先ほどソースを確認したら間違っていたので修正してみます


8:[完了] アッツ〜 [2006/03/23 00:31 ]

ソースの入れる場所が悪かったみたいで
なんとかできました。
ありがとうございました。


9:[質問] アッツ〜 [2006/03/26 22:34 ]

完了したと思ったのですが・・・。
print"Content-Type:text/html; Charset=EUC_JP";

の行をいれると文字化けはしないのですが
今度は実行がおかしくなります。

↑を入れると実行がおかしくなりはずすと
正常に戻るんです。なんかCGIに影響のあるものなのでしょうか?

例えば
print "Content-Type:text/html;Charset=EUC-JP\n\n";

if($hensin1 eq "返信"){
    $no = 1;
      @kei=&hensin($no,@kei);#CGI実行
         &form_1(@kei);#フォーム出力

(@kei) = &hensin_2;#返信の処理をここでするファイル読み込み    

&kakiko(@kei,$hen_flg);#(保存)文章を書き込む
&form;#書き込む枠
&html_syutu; #HTML出力    

のようにする文字化けはしませんが実行がおかしくなってしまいます。例えばこれは掲示板のプログラムなのですが最後に書き込み
した人が板ごと上にあがるはずなのにその人の書き込みだけ
上に行くだけとかです。

後は↓これを入れる場所を変えると
print"Content-Type:text/html; Charset=EUC_JP";

文字化けしてしまいます。
しかしエンコードしてもどして実行すると
私の思惑どおりになるんです。

なんとかエンコードしなくても思惑通りうまくいく方法
があったらヒントでもなんでもいいので教えていただけると
うれしいです。
ちょっとわかりにくいですかね?
コード入れてもいんですがなにせ行数が多いので、汗

回答(必須): 状態:

お名前(必須):

URL:




[戻る]