サイトにカレンダーを設置しようとしたんですが、
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ESC/Pのテキスト印字の制...
-
フォームメールを受信すると文...
-
秀丸でCGIを開いたら文字化...
-
応募フォームなどの住所欄で最...
-
エクセルシート名の制限を変更...
-
DataGridViewの特定列に入力さ...
-
stable diffusionのエラー
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
Rstudioによるテキストマイニン...
-
MySQLに登録すると文字化け
-
テキストボックスに入力された...
-
Excel VBA メール作成について ...
-
html→aspxへのタグ変換方法
-
【VB2005】テキストボックス内...
-
Excel 1セル当りの文字数が2...
-
バイト配列 抜き出す
-
printfの%eで指数部分の桁数を...
-
異なるドメインのサイトでcooki...
-
Javaで日本語1文字のバイト数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ESC/Pのテキスト印字の制...
-
CGIプログラムを使った申し込み...
-
utf-8でメールを送信すると件名...
-
ソ噂浬欺圭構蚕十申曾箪貼能表...
-
&jcode'convert(しても文字化け...
-
SQLServerへの出し入れで文字化け
-
フォームメールを受信すると文...
-
HttpURLConnection転送で漢字表示
-
全角カタカナチェックについて
-
入力項目のチェック
-
perlで英数字を取り出すには?
-
.cgi でタグが勝手に変換されま...
-
フォームメールで名前を全角の...
-
文字化けとパスワード変更
-
perl cgi のエンコード SHIFT...
-
文字化け
-
cgiでの文字化け
-
文字コードsjisをUTF8に書き換...
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
おすすめ情報