Perlで書いたCGIプログラムを使って、申し込みフォームを作成し、送信先をOutlookExpressのメーラーにしてHTML形式で表示しています。
サーバーはLINUX、メールを見ているPCはWindows98SEです。
しかし、なぜか申請書という文字が瑞ソ書というふうに文字化けしてしまいます。
他の字は大丈夫のようなんですが。。どうしたら良いでしょうか?
もちろん、print OUT "Content-type: text/html; charset=\"ISO-2022-JP\"\n";
の指定はしています。
No.2
- 回答日時:
もしくは「申請書」→「¥申¥請書」
ご回答ありがとうございました。
「¥申請書」ではだめでしたが、 「¥申¥請書」 で、できました。でも、「申¥請書」 でいいみたいです。
No.3
- 回答日時:
こんにちは
euc jis sjis unic
申 BFBD 3F3D 905C 7533
請 C0C1 4041 90BF 8ACB
書 BDF1 3D71 8F91 66F8
瑞 BFF0 3F70 9090 745E
ソ A5BD 253D 835C 30BD
書 BDF1 3D71 8F91 66F8
申請書の申のShift JISの2バイト目が5Cですね。
瑞ソ書のソのShift JISの2バイト目も5Cですね。
5Cは\です。
これが文字化けの原因でしょうね。
No.4ベストアンサー
- 回答日時:
「申請書」が「瑞ソ書」に化けてしまうのは、スクリプトがシフトJISで書かれているために起こる問題であって、メールの送信云々とは無関係です。
例えば、
print "申請書";
とだけ書いたスクリプトで、同様の結果が得られます。
直すには、「申」の後ろに「\」を付ける(つまり "申\請書" とする)方法が簡単です。
他にも「表」「予」「能」など、文字化けを起こしたりする文字が多数あります。
以下に原因の詳細などを書きますが、長いので興味がなければ読み飛ばしてください。
「申請書」のシフトJISの文字コードは
申 請 書
90 5C 90 BF 8F 91 (16進)
となっています。
このうち「申」の2バイト目である「5C」というコードは、文字「\」(エスケープコード)であるため、すぐ後の「90」とくっついて「\x90」という扱いになってしまいます。
つまり Perl の内部では、
print "\x90\x90\xBF\x8F\x91";
であると解釈されてしまい、これをシフトJIS環境で表示すると
90 90 BF 8F 91 (16進)
瑞 ソ(半角)書
となるわけです。
※もし「ソ」が全角になっているとすれば、メール送信用にJIS変換する際に、jcode.pl よって全角に変換されているのです。
このような原因により、既に化けてしまった文字列を メール送信しているので、受け取った側でも化けて見えるのは当然ですね。
この問題は Perl がシフトJISの事情など考慮せずに作られているのが原因(世界中で使われているのだから当然)で、上記のように「5C」の後ろにもう1つ「5C」を書くことで解消できます。
これが面倒な場合は、日本語が扱える jperl を使う、スクリプトを EUC で書く、などの対処方法があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptからCGI
-
CGI(Perl)の文字化けについて
-
SQLServerへの出し入れで文字化け
-
文字化けとパスワード変更
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
10Mバイトて文字数に すると何...
-
Excel VBA メール作成について ...
-
ビットスワップとバイトスワッ...
-
POSTで配列のデータを渡す方法は?
-
pythonでDBのカラム名で取得し...
-
number 改行が追加できない
-
UTF-8で5~6バイトになる文字コ...
-
Rstudioによるテキストマイニン...
-
char str[256]の256の意味は?
-
C言語 構造体の名前欄?を小文...
-
if文中で@***(配列変数)って...
-
クロス集計
-
バイト列とバイナリ列の違いが...
-
CGIで改行タグを改行コードに変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
&jcode'convert(しても文字化け...
-
ESC/Pのテキスト印字の制...
-
応募フォームなどの住所欄で最...
-
postmail ver4.3でメールを送る...
-
CGIメールフォームのメールが文...
-
SQLServerへの出し入れで文字化け
-
CGI掲示板の文字化け
-
utf-8でメールを送信すると件名...
-
JavaScriptからCGI
-
CGI(Perl)の文字化けについて
-
全角カタカナチェックについて
-
中国語のためのアンケートフォ...
-
文字化けとパスワード変更
-
文字コードsjisをUTF8に書き換...
-
perlで英数字を取り出すには?
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
Excel VBA メール作成について ...
-
char str[256]の256の意味は?
おすすめ情報