![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
サイトにカレンダーを設置しようとしたんですが、
2005年4月
日 月 火 水 木 金 土
と表示されるはずなのに、
2005年4・/b>
楠:/font> ・/font> 於:/font> 水 万:/font> 金:/font> 土
こんな感じで文字化けしてしまいます。
いくつか他のcgiのカレンダーをダウンロードして試してみたんですが、どれもやっぱり日付のところが上のようになってしまいます。cgiというよりどこか他のところに問題があるのかなとも思うんですが、どうすればいいでしょうか。
cgi以外の部分は特に文字化けはありません。他にフォームメールのcgiも使ってみましたが、こちらも問題なく使えました。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
エスケープシーケンスというのは、
画面などに表示出来ない特殊な文字の指定などを行うための事です。
以下は専門的になりますが、説明下手はご勘弁下さい。
今回の文字化けの原因は、Shift-JISという規格とPerl側にあります。
Pelrは日本語対応できるように作られた訳ではありませんので、
特定条件のときに文字化けを起こします。
文字(漢字を含む)は、文字コードといって、16進という数値で表されます。
例えば「表示」の文字コードは「955C8EA6」(「955C」で表、「8EA6」で示)なのですが、
この時、「5C」の部分が文字コードが「5C」の「\」と解釈されてしまい、Pelrが「5C」を消してしまいます。
(エスケープとは逃げるとか消すという意味だと考えて頂いていいでしょう)
結果、「955C8EA6」が「958EA6」になり、
「958E」で「侮」、「A6」が「ヲ (この場合半角文字)」になってしまいます。
文字コードにして「5C」が含まれる場合は、エスケープされる文字を追加する必要があります。
「表示」の文字の場合、「表\示」文字コードでは「955C5C8EA6」となるようにします。
「表\示」と書くと、Pelrは最初の「5C」を消してしまいますが、その後ろは消しません。
そうすると「955C8EA6」になりますので、正しく「表示」となります。
文字コードで「5C」を含む文字は全て同じになります。
エスケープの方法は、#1さんの書き方で大丈夫でしょう。
因みに、EUCという規格で書けばこの問題は起こりません。
No.1
- 回答日時:
エスケープシーケンスしないと駄目な文字が途中で入っているのでは?
例えば「表示」なんかをPerl-cgiのprintで、HTML出力させるときは、
print "<H1>表示</H1>\n";
なら
print "<H1>\表\示</H1>\n";
としないと化けるんですよ。
この回答への補足
早速回答ありがとうございます。
あの、エスケープシーケンスというのがよく分からないのですが・・・。
>print "<H1>\表\示</H1>\n";
のサンプル例から見ると、\マークを入れておけばいいということですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- HTML・CSS HTMLで特定の文字だけ色を変えたいのですが、指定した色と違う色が反映してしまいます。 下記、「前」 5 2023/06/27 12:08
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP アンドロイドスマホでのphp echoの文字サイズ 1 2023/05/13 15:15
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化け
-
CGIメールフォームのメールが文...
-
この日本語の文章をリコーディ...
-
JavaScriptからCGI
-
Perl/CGIでのエンコード方法
-
「1TB」のHDDに日本語は何字入...
-
ポインター引数の関数でコンパ...
-
エクセルシート名の制限を変更...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
二次元配列
-
DataGridViewの特定列に入力さ...
-
ListView重複データ削除
-
[VBScript][wsh]byte単位でのデ...
-
ビットスワップとバイトスワッ...
-
FAT12ファイルシステムに関する...
-
Console.writeLineで文字化け
-
Line Inputにて改行があっても...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
&jcode'convert(しても文字化け...
-
ESC/Pのテキスト印字の制...
-
utf-8でメールを送信すると件名...
-
応募フォームなどの住所欄で最...
-
perl cgi のエンコード SHIFT...
-
CGIプログラムを使った申し込み...
-
SQLServerへの出し入れで文字化け
-
これはなんて文字コードかわか...
-
JavaScriptからCGI
-
Window open パラメタについて
-
PerlのCGIで全角スペースを入れて
-
cgiの文章がHP上で見ると文字化...
-
CGI(Perl)の文字化けについて
-
フォームメールを受信すると文...
-
文字化け
-
CGIからの文字が化ける
-
文字化けとパスワード変更
-
全角カタカナチェックについて
-
数値・漢字(外字含む)だと認識...
-
perlで英数字を取り出すには?
おすすめ情報