No.7ベストアンサー
- 回答日時:
秀丸の自動判別について補足です。
秀丸に限らず、基本的にエディタの「自動判別」はファイルの先頭部のデータの漢字コードを見て判別を行っているので、ファイルの先頭部にShiftJISのデータが入っていて、その後にEUCのデータが続くようなケースでは、エディタは漢字コードをShiftJISとして判断してしまうので、EUCの部分は文字化けして表示されます。
一度data.textのファイルを抹消してみて、ファイルサイズ0の状態でCGIを実行させるとどうなりますか?
ありがとうございました。一度data.textのファイルを抹消したところ、無事文字化けせずにできました。また、if構文はif2に名前を変更して、もう一度EUCで保存しなおしたところ、きちんと作動しました。
何度も教えてもらい本当にお世話になりました。ありがとうございました。またよろしくお願いします(笑)
No.6
- 回答日時:
スクリプトのencodingについてはdanyさんの書かれている通りです。
秀丸は使ってないので(私はDana派)詳細はわかりませんが、秀丸に限らず一般的なWindowsのエディタであれば標準の漢字コードはShiftJISになるので、EUCで処理したければnkfなどの漢字コード変換ツールを使う必要があります。
あるいは秀丸に漢字コードの変換機能があればそれを使うのも手でしょう。
ところで、出力されたdata.textを秀丸で開いた場合はどうなのでしょうか?
自動判別がonになっているのであれば、文字化けはしないと思うんですが…。
No.5
- 回答日時:
Windows上で扱う基本的な文字コードはshift-jis(sjis)です。
だから新規でテキストを作った場合などは何もしなければ
sjisで保存されます。
セーブする時文字コードの指定とかできるんじゃないですか?
「自動判別」というのは読み込むファイルの文字コードを判別
する機能です。秀丸は使っていないので詳しいことは不明ですが、
offの状態でeucやjisのファイルを読ませると化けたりするのでは。
私が使っているWZ Editorでは[ファイル]-[文書の情報]で文字
コードを確認することができます。秀丸にも似たような機能が
あるのではないかと。
IEにテキストを読ませて、[表示]-[エンコード]で調べてみるのも
いいかも。違うコードなら化けます。
本当に何度もありがとうございました。
一度、cockyさんに言われたとおり、textファイルを抹消したところ、無事文字化けせずにみれました。
やはり、sjisで書かれていたようでした。if構文のほうはif2に名前を変えてEUCで保存しなおしたところうまく作動しました。まだまだわからないことが多いですが、今回は本当に何度も教えてもらい感謝しています。ありがとうございました。またよろしくお願いします(笑)
No.4
- 回答日時:
cockyさんと同様、スクリプトがsjisで書かれているような気がします。
エディタは何を使ってますか?
eucの「ゆず」とsjisの「ゆず」はコードが違うからif は真に
なりません。
この回答への補足
お返事ありがとうございます。
エディタは秀丸を使っています。
cockyさんの補足にも書いたのですが、秀丸で自動判別にしてあるので、EUCで書かれているのだと思っていたのですが・・?
初心者すぎる質問で恥ずかしいのですが、スクリプトを確認するにはどうすればいいですか?
やっと、お二人の言いたいことが分かり始めたました(^^;たびたびすみませんがよろしくお願いします。
No.3
- 回答日時:
スクリプト自体の漢字コードは何で書かれてますか?
あと、出力結果のファイルの内容は何で確認しましたか?
スクリプトがShiftJISで書かれているのに漢字コードをEUCに変換したら、同じ文字でもコード体系が異なるためにif文でデータが一致しないのは当然だと思います。
またEUCで出力されたファイルをダウンロードしてメモ帳などで開いても、Windowsのメモ帳はShiftJISコードのテキストでないと文字化けしますから、それは文字化けするように見えてしまいますよね。
大事なのはdanyさんも書かれているように「文字コードを一つに統一する」ことなので、その点に注意してやり直してみて下さい。
プログラムそのものは文法的におかしいところはなさそうなので。
この回答への補足
迅速なお返事ありがとうございます。
すごく恥ずかしいのですが、漢字コードを何で書いてあるかという質問について、よくわからないのですが、とりあえず、秀丸で書いてて、文字コードを自動判別するようにしてあり、そのままプログラムを書いています。のでEUCになっているものだと思っているのですが・・?
また、出力結果のファイルの内容はやはり、秀丸で開いています。
No.2
- 回答日時:
あー、質問がよくわからないのですが、
「text.dataでは文字化けします。CGI上の文字は大丈夫なのですが」
というのは、
「ブラウザに表示されたフォームに文字を入力している時点では
化けていないのに、フォームデコードしたものになにがしかの処理を
加えると化けてしまう」
という意味でしょうか? cockyさんが書いているように、入力画面、
スクリプト内で文字コードを統一しないといけません。
また、shift-jisで書かれたスクリプトの中で「横浜」とか書くと
化けます。一番簡単なのはすべてEUCで統一することですかね。
ifに関しては、これだけの情報ではサッパリです。^^;
この回答への補足
ありがとうございました。下記に補足します。
このように書いたのですが、かなが文字化けしており、
英数は文字化けしません。一応、文字コードは指定してあるはずですが、これではいけませんか?
require 'cgi-lib.pl';
&ReadParse(*answer);
$data="$answer{'text1'},$answer{'select'},$answer{'text2'}";
require 'jcode.pl';
&jcode'convert(*data,'euc');$jikan = localtime(time());
open (ANSWER, ">>data.text");
print ANSWER "$jikan,$data\n";
close (ANSWER);
また、if構文ですが、長くなりますが、やはり全部載せます(^^;。すみませんが、また教えてください。
#!/usr/local/bin/perl
require 'cgi-lib.pl';
&ReadParse(*answer);
$data = $answer{'text1'};
require 'jcode.pl';
&jcode'convert(*data,'euc');
print "Content-type:text/html\n\n";
if ($data eq "ゆず") {
print <<EOF;
<html>
<head><title>当たり!</title></head>
<body>
<font size="4">
正解です。
</font>
<a href="index.html">ここ</a>をクリックしてください。
</font>
<br><br>
EOF
} else {
print <<EOF;
<html>
<head><title>はずれ!</title></head>
<body>
<font size="4">
はずれです。
<a href="JavaScript:history.back()">もう一度入力してください。</a>
</font>
<br><br>
EOF
}
print <<EOF;
</body>
</html>
EOF
exit;
No.1
- 回答日時:
漢字コードの変換はきちんと行っていますか?
CGIで入力されるデータの漢字コードは一定ではありませんから、CGIの最初のところでjcode.pl等を使って漢字コードをきちんと変換してやらないと、そりゃ文字化けして当たり前です。
この回答への補足
ありがとうございます。一応、jcode.plを使ってはいるのですが・・。danyさんの補足に詳しく書きましたのでよろしければ、教えてください。ちなみにjcode.plは自分で書いていないので(あるのを拝借した)こっちに問題がある場合は特に詳しく教えてください。分かりにくい質問ですみません(^^;
補足日時:2001/03/28 20:34お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript HTMLでJavaScriptを使用してプログラムを作ります。 入力されたパスワードを取得して、パス 2 2022/10/18 01:05
- Excel(エクセル) マクロ、条件付き書式のfont.color 1 2023/03/28 01:10
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- その他(セキュリティ) googleのパスワード変更について 4 2022/05/02 14:22
- ノートパソコン なかなかに酷い状況です。ノートパソコンのPINを忘れてしまいました。「PINを忘れた」を押してアカウ 2 2023/02/18 15:32
- 高校 図書館や学習プラザでは消しゴム禁止にしませんか? 5 2023/05/08 18:36
- Wi-Fi・無線LAN ルーターの暗号化キーはなぜ初期値から変更するの? 2 2022/08/11 16:28
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
utf-8でメールを送信すると件名...
-
文字化けとパスワード変更
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
【Excel VBA】10進数を2進数に...
-
10Mバイトて文字数に すると何...
-
ListView重複データ削除
-
とほほさんのファイルのアップ...
-
LWP::Simple;でWebページを取得...
-
“半角カタカナ”は、ずいぶん昔...
-
ビットスワップとバイトスワッ...
-
VBAでShift-JISのURLエンコード
-
CGIの変数に配列を代入する方法
-
matlabのソースコードをpython...
-
VB2010でラベルに文字を結合したい
-
C言語でwin32apiを使ってnotepa...
-
チェックボックスのvalue値の取...
-
文字コードの利点・欠点について
-
PICマイコンで変数値の保持
-
なんで外国人の書く顔文字は横...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
&jcode'convert(しても文字化け...
-
CGIプログラムを使った申し込み...
-
全角カタカナチェックについて
-
ESC/Pのテキスト印字の制...
-
ソ噂浬欺圭構蚕十申曾箪貼能表...
-
CGIメールフォームのメールが文...
-
Perl でメール送信プログラム。
-
Perlのcgi-lib.plでデコードさ...
-
CGIフォームから飛ばすメールが...
-
utf-8でメールを送信すると件名...
-
この日本語の文章をリコーディ...
-
文字化け
-
ECUコードのCGIを編集す...
-
文字化け
-
SQLServerへの出し入れで文字化け
-
PerlのCGIで全角スペースを入れて
-
文字化けとパスワード変更
-
CGIについてです。教えて下さい...
-
.cgi でタグが勝手に変換されま...
-
応募フォームなどの住所欄で最...
おすすめ情報