KENT-WEB サポートコーナー 過去ログ [ 0264 ]


記事No: 5669
投稿日: 2009/03/29(Sun) 02:10:06
タイトルブログ風日記の文字コード
ID情報: chikako
投稿者: chikako
URLhttp://www.pasokonsensei.net/sample/index/diary.cgi

ブログ風日記を設置させていただきました。
日本語と中国語でも表記したく、文字コードをUTF-8にしようとサポートコーナーのFAQなどを参考に挑戦しましたが上手くいきませんでした。

init.cgiなどのjcode.plへリンクする記述の文頭に#をつけ無効にし、HTMLに<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />を記述しなおしましたが失敗でした。

jcode.plの記述中のconvfあたりを変更すれば上手くいくかなと思いましたが記述の仕方が分かりません。

CGIは設置するのが精一杯で、改造するほどの知識は持ち合わせていません。
どのように変更すればブログ風日記の文字コードを変更できるか どうぞ、ご教授よろしくお願いいたします。


記事No: 5674
投稿日: 2009/03/29(Sun) 15:31:19
タイトルRe: ブログ風日記の文字コード
ID情報: teketen
投稿者: てけてん

私は、ブログ風日記のスクリプトを持っていないので、詳しいアドバイスは出来ませんが、CGIスクリプトもutf-8で保存していますか?
参照先にアクセスしたところ、Shift_jisのままのようです。
すべてのスクリプトをutf-8で保存し直して下さい。


記事No: 5676
投稿日: 2009/03/29(Sun) 17:30:16
タイトル>てけてんさん
ID情報: chikako
投稿者: chikako
URLhttp://www.pasokonsensei.net/sample/index/diary.cgi

てけてんさん、ありがとうございます。

> 私は、ブログ風日記のスクリプトを持っていないので、詳しいアドバイスは出来ませんが、CGIスクリプトもutf-8で保存していますか?
> 参照先にアクセスしたところ、Shift_jisのままのようです。
> すべてのスクリプトをutf-8で保存し直して下さい。

上記のように すべてのCGIファイルを保存しなおし、また

# 外部ファイル【サーバパス】
#$jcode = './lib/jcode.pl';
とし、

init.cgiのみ 57行目 60行目あたりを

# シフトJISコード変換
#&jcode::convert(\$val, 'sjis');

# エスケープ
#$val =~ s/&/&amp;/g;
#$val =~ s/"/&quot;/g;
#$val =~ s/</&lt;/g;
#$val =~ s/>/&gt;/g;
#$val =~ s/\r\n/<br>/g;
#$val =~ s/\r/<br>/g;
#$val =~ s/\n/<br>/g;

のように変更しましたが管理画面も文字化けのままなのです。
試しにlibの中もそれぞれUTF8形式で保存し直したのですが、状況は変わらずです。

今も分からないなりに、色々なサイトを参考に少しずつ手直ししては元に戻しして挑戦しています。
よろしくお願いします。


記事No: 5677
投稿日: 2009/03/29(Sun) 18:50:10
タイトル文字コード変更状況
ID情報: chikako
投稿者: chikako
URLhttp://www.pasokonsensei.net/sample/index/diary.cgi

てけてんさん<No.5674>のアドバイス通りにし、<No.5676>のようにした後、

admin.cgiの # HTMLヘッダ(921行めあたり)を

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

に変更すると管理画面の文字化けが解消しましたが、ブログ本体のトップページのタイトル部分やプロフ部分は依然、文字化けが解消されません。
試しにテスト投稿をしたら、投稿画面やブログ本体のトップページに表示される記事部分などは文字化けもせず表示されました。

参考に現状況を記しておきます。


記事No: 5678
投稿日: 2009/03/29(Sun) 19:23:41
タイトルRe: 文字コード変更状況
ID情報: teketen
投稿者: てけてん

このブログ風日記は、テンプレートファイルでデザインを変更出来たんですね。
このテンプレートファイルの文字コードも、utf-8にされていますか?

---------------------------------
以下、ご質問とは関係ありませんが

> # エスケープ
> #$val =~ s/&/&amp;/g;
> #$val =~ s/"/&quot;/g;
> #$val =~ s/</&lt;/g;
> #$val =~ s/>/&gt;/g;
> #$val =~ s/\r\n/<br>/g;
> #$val =~ s/\r/<br>/g;
> #$val =~ s/\n/<br>/g;

タグを使えるようにしたくて、このようにした場合でも、

> #$val =~ s/\r\n/<br>/g;
> #$val =~ s/\r/<br>/g;
> #$val =~ s/\n/<br>/g;

の部分は元に戻してください。
また、タグを使えるようにするなら、他の方のコメントは受け付けないようにしてください。
コメントを受け付ける場合は、全てのタグを使えるようにするのは、セキュリティ的に危険です。
「クロスサイトスクリプティング脆弱性」
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
をお読み下さい。
悪意を持った人が、XSS欠陥を利用する可能性があります。


記事No: 5680
投稿日: 2009/03/29(Sun) 20:10:36
タイトル変更状況について
ID情報: chikako
投稿者: chikako
URLhttp://www.pasokonsensei.net/sample/index/diary.cgi

てけてんさん、ありがとうございます。

> このブログ風日記は、テンプレートファイルでデザインを変更出来たんですね。
> このテンプレートファイルの文字コードも、utf-8にされていますか?

すっかり忘れていました。
ブログ風日記にはテンプレートファイルがtenpl/top.html(ブログトップページ)とtenpl/msg.html(タイトル部分?)の2つありました。

アドバイスの通り、こちらも それぞれ
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
となっていた部分を

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
に置き換えました。
が、残念ながら文字化けは解消されませんでした。

> ---------------------------------
> 以下、ご質問とは関係ありませんが
>
> > # エスケープ
> > #$val =~ s/&/&amp;/g;
> > #$val =~ s/"/&quot;/g;
> > #$val =~ s/</&lt;/g;
> > #$val =~ s/>/&gt;/g;
> > #$val =~ s/\r\n/<br>/g;
> > #$val =~ s/\r/<br>/g;
> > #$val =~ s/\n/<br>/g;
>
> タグを使えるようにしたくて、このようにした場合でも、
>
> > #$val =~ s/\r\n/<br>/g;
> > #$val =~ s/\r/<br>/g;
> > #$val =~ s/\n/<br>/g;
>
> の部分は元に戻してください。
> また、タグを使えるようにするなら、他の方のコメントは受け付けないようにしてください。
> コメントを受け付ける場合は、全てのタグを使えるようにするのは、セキュリティ的に危険です。
> 「クロスサイトスクリプティング脆弱性」
> http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
> をお読み下さい。
> 悪意を持った人が、XSS欠陥を利用する可能性があります。

全く知りませんでした。知識もなく色々なサイトを参考に見当だけで#をつけただけなのですが、セキュリティ的に危険になっていたなんて大変参考になります。


記事No: 5681
投稿日: 2009/03/29(Sun) 22:56:39
タイトルなんと…
ID情報: chikako
投稿者: chikako
URLhttp://www.pasokonsensei.net/sample/index/diary.cgi

文字コードをUTF8すべくその後も色々と試してみました。

管理画面の基本設定部分も文字化けしていたので、入力しなおしてみると、なんと、きちんと文字化けせずに表示されるようになりました。
対応していただいた てけてんさん、ありがとうございました。
今のところ短文ですが中国語もきちんと表示されているようです。

以下、今回UTF8へ変更した記述を残します。

-----CGIすべて---
# 外部ファイル【サーバパス】
#$jcode = './lib/jcode.pl';


-----init.cgi 57行目と60行目あたり-----
# シフトJISコード変換
#&jcode::convert(\$val, 'sjis');

# エスケープ
#$val =~ s/&/&amp;/g;
#$val =~ s/"/&quot;/g;
#$val =~ s/</&lt;/g;
#$val =~ s/>/&gt;/g;
$val =~ s/\r\n/<br>/g;
$val =~ s/\r/<br>/g;
$val =~ s/\n/<br>/g;


-----admin.cgiの # HTMLヘッダ 921行めあたり-----

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

-----tenplディレクトリtop.htmlとmsg.html-----
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />



記事No: 5684
投稿日: 2009/03/29(Sun) 23:13:17
タイトルRe: なんと…
ID情報: teketen
投稿者: てけてん

> 全く知りませんでした。知識もなく色々なサイトを参考に見当だけで#をつけただけなのですが、セキュリティ的に危険になっていたなんて大変参考になります。

もしも、

> # エスケープ
> #$val =~ s/&/&amp;/g;
> #$val =~ s/"/&quot;/g;
> #$val =~ s/</&lt;/g;
> #$val =~ s/>/&gt;/g;

の部分が、utf-8にする為のものと思われていたら、それは違います。
コメント等で、タグを有効にする為の処置です。
誰でも記事に対するコメントが書ける状態なので、#を取り、元に戻すことを強くオススメします。


記事No: 5685
投稿日: 2009/03/30(Mon) 00:15:43
タイトルRe^2: なんと…
ID情報: chikako
投稿者: chikako
URLhttp://www.pasokonsensei.net/sample/index/diary.cgi

> > 全く知りませんでした。知識もなく色々なサイトを参考に見当だけで#をつけただけなのですが、セキュリティ的に危険になっていたなんて大変参考になります。
>
> もしも、
>
> > # エスケープ
> > #$val =~ s/&/&amp;/g;
> > #$val =~ s/"/&quot;/g;
> > #$val =~ s/</&lt;/g;
> > #$val =~ s/>/&gt;/g;
>
> の部分が、utf-8にする為のものと思われていたら、それは違います。
> コメント等で、タグを有効にする為の処置です。
> 誰でも記事に対するコメントが書ける状態なので、#を取り、元に戻すことを強くオススメします。

ありがとうございます。
何故か下の3行だけ元に戻せばいいのかと勘違いしました。
すべて元に戻し
# エスケープ
$val =~ s/&/&amp;/g;
$val =~ s/"/&quot;/g;
$val =~ s/</&lt;/g;
$val =~ s/>/&gt;/g;
$val =~ s/\r\n/<br>/g;
$val =~ s/\r/<br>/g;
$val =~ s/\n/<br>/g;
に修正しました。
もちろん文字化けもなく きちんと表示されています。
ありがとうございます。


[検索ページ]