こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PHP+smartyで文字化け

PHP+smartyでサイトを作成し始めました。(以下URL)
http://babyitem.info/

PHPファイル、テンプレート共に、文字コードはEUCで作成しています。
サーバーは、ロリポップをレンタルしています。

index.phpは以下の通りです。
-----------------------------------------------------------
<?php
$contents_title="ベビーアイテム.info";
$tpl->assign("contents_title",$contents_title);

$tpl->display("babyitem.tpl");
?>
-----------------------------------------------------------


babyitem.tpl(上記サイト左の部分)は以下の通りです。
-----------------------------------------------------------
<div id="left">
<div class="left_top">{$contents_title}</div>
<div class="left_bottom"></div>
</div>
-----------------------------------------------------------


テンプレートファイルの{$contents_title}に
「ベビーアイテム.info」という文字をassignしているのですが、
文字化けして表示されてしまいます。


ちなみに、「babyitem.info」という文字をassignすると、
そのまま、「babyitem.info」と表示されます。


正しく表示する為には、どの辺りの設定を確認すれば良いでしょうか?
ご教授くださいませ。

投稿日時 - 2007-07-13 00:12:57

QNo.3162819

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

こんにちわ。

PHPの内部エンコーディングの問題かな?

mb_detect_encoding($contents_title);
とすると、文字コードは何になっていますでしょうか?
>mb_detect_encodingの解説
http://jp.php.net/mb_detect_encoding

もしこれがEUCでなかったら、エンコードの必要がありますね。

投稿日時 - 2007-07-13 09:55:57

補足

babyitem.tpl(上記サイト左の部分)におきまして、
修飾子(?)に”|smarty:nodefaults”を追記しましたところ、
文字化けせずに表示させることができました。

-----------------------------------------------------------
<div id="left">
<div class="left_top">{$contents_title|smarty:nodefaults}</div>
<div class="left_bottom"></div>
</div>
-----------------------------------------------------------

これは根本解決になっていませんが、
これで、何か問題箇所が見えますでしょうか?

投稿日時 - 2007-07-14 01:10:52

お礼

ご回答いただき、ありがとうございます。

ご指摘いただきました関数で、
文字エンコーディングを表示して確認してみましたところ、
「EUC-JP」と表示されました。

文字コードを確認する関数があったんですね。
勉強になりました。

ご回答いただき、ありがとうございました。
他に確認すべき箇所があるようでしたら、
またご指摘いただけますよう宜しくお願いします。

投稿日時 - 2007-07-14 00:13:39

ANo.1

Smartyは2年ほど前にセットアップしてから
それを使い回しているので、もしかしたらVersionUPなどで
変わったのかもしれませんが…。
$tpl->
の部分は
$smarty->
ではないでしょうか?

まったく自信ありませんが…。


それよりも、ソースを拝見するときちんと最後まで排出されていないようですね。
その辺をもう一度チェックなされてはいかがですか?

投稿日時 - 2007-07-13 07:27:44

お礼

ご回答いただき、ありがとうございます。

smartyを定義しているPHPファイルをincludeしていますが、
そこでは、以下のように宣言しています。

---------------------------------------------------
require_once("Smarty.class.php");
$tpl = new Smarty;
---------------------------------------------------

ご指摘いただきましたSmartyの変数名を確認しましたが、
ここは問題なさそうです。


また、最後までソースが排出されていなかった件ですが、
最後の</body>まで排出されるよう修正いたしました。


ご回答いただき、ありがとうございます。
他にも確認すべき箇所がございましたら、ご教授いただければと思います。

投稿日時 - 2007-07-14 00:08:24

あなたにオススメの質問