プロが教える店舗&オフィスのセキュリティ対策術

SSIで日付を表示するため、shtmlファイルに<!--#echo var="DATE_LOCAL" --> を入れたのですが、shtmlの文字コードをUTF-8にして保存すると文字化けしてしまいます。 SHIFT-JISで保存すれば正常に表示されるのですが、UTF-8で保存しても正しく表示できるようにするにはどうしたらよいのでしょうか? 
ちなみにサーバーはApache 2.0.63です

A 回答 (1件)

OS の環境(Shift_JIS と仰られているので Windows 系


なのかも知れませんが)をお書きになられていないので
Linux 等の場合として書きます。
httpd 起動時の環境変数 (LANG) によって表示される
日時のフォーマットが異ります。
環境変数の影響受けるのは httpd で使用している日時
表示には strftime 関数が使われているのためです。
殆どのディストリビューションの場合 LANG=C として
起動するように起動スクリプトで設定されています。
仮りに LANG=ja_JP.EUC-JP として起動していたものを
LANG=C に変更することにより、表示は次のように変化
します。

日曜日, 06- 9月-2009 09:00:00 JST

であったものが

Sunday, 06-Sep-2009 09:00:00 JST

となります。

但し、化けているのは曜日や月の漢字部分だと思われるので
曜日等の表示が不要であれば config の要素に timefmt の
指定を記述して次のようにすることも可能です。

<!--#config timefmt="%y年 %m月 %d日 %H時 %M分 %S秒" -->
<!--#echo var="DATE_LOCAL" -->

この場合は

09年 09月 06日 09時 00分 00秒

という表示になります。


Apache チュートリアル: Server Side Includes 入門 - Apache HTTP サーバ
http://httpd.apache.org/docs/2.0/ja/howto/ssi.html

Manpage of STRFTIME
http://www.linux.or.jp/JM/html/LDP_man-pages/man …

この回答への補足

いろいろ考えてみたのですが、やはり分からないので再質問させていただきます。

補足日時:2009/09/10 20:58
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
OSの環境を書き忘れていましたね。すみません。
OSはWindowsのVistaです。

文字化けの箇所ですが、<p>現在の時刻は <!--#echo var="DATE_LOCAL" --> です</p> という文を挿入し、Shift_JISで保存したとすると、
現在の時刻は Sunday, 06-Sep-2009 13:21:12 東京 (標準時) です
となるのに対し、UTF-8で保存すると
現在の時刻は Sunday, 06-Sep-2009 13:47:14 □□□□(□W□□□□) です
 のようになり、東京 (標準時)の部分が文字化けします。
timefmtを使わずにUTF-8で正常に表示する方法はないものでしょうか?

お礼日時:2009/09/06 14:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!