• 締切済み

SSIの日付の文字化けの対処方法はありますか?

お世話になります。 SSIで日付を次のようにHTMLのページに書いています。 <!--#config timefmt="%Y年%m月%d日(%a)" --><!--#echo var="DATE_LOCAL" --> すると、今までは、「2014年11月20日(Thu)」と出ていましたが、 ブロバイダが、サーバーを機種変更して新しくしたら文字化けして、「2014”N11ŒŽ20“úiThuj」と出てしまいます。 そこでブロバイダに問い合わせましたら、 「SSIはユーザー権限で動作しますのでシステム系のコマンドや 他のディレクトリにあるCGIなどは動作しません。 日付を表示したい場合はJavaなどを使用していただきますようお願いいたします。」 という返事が返ってきました。 返答の意味が分かりませんが、今まではよかったのに、どう考えたらいいのでしょうか? 今でも他のSSIは使えています。 よろしくお願い致します。

みんなの回答

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.4

echo に encoding 属性を指定してみたらどうでしょうか。私の利用しているプロパイダでは、文字化けせずに表示することができます。(ちなみに、HTML の文字コードは euc-jp で、サーバは Apache/2.2.25 です。) <!--#config timefmt="%Y年%m月%d日(%a)" --><!--#echo encoding="none" var="DATE_LOCAL" -->

すると、全ての回答が全文表示されます。
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.3

apache のデータ変換用コマンドの設定らしいのだが(詳しいことは知らないけど)、SSIのconfigフォーマットに含まれた多バイト文字を、1バイトごとに &#x25; というようなhtmlエンティティ形式に変換しちゃうような状況をみたことがある。数年前に消えたフリーサーバーがそうだった。これは出力されたhtmlソースをみると解ります。 プロバイダーの返事が、意味不明ということは、その設定変更は望めないので、SSI のフォーマットに多バイト文字を含めるのはあきらめましょう。年と月と日と個別にやればok <!--#config timefmt="%Y" --><!--#echo var="DATE_LOCAL" -->年 <!--#config timefmt="%m" --><!--#echo var="DATE_LOCAL" -->月 <!--#config timefmt="%d" --><!--#echo var="DATE_LOCAL" -->日 <!--#config timefmt="(%a)" --><!--#echo var="DATE_LOCAL" -->

kitaone
質問者

お礼

ありがとうございます。 真の解決ではないですが、書いていただいた内容で目的は達成できます。 私もいま現在そうしています。ありがとうございました。

すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

<!--#config timefmt="%Y/%m/%d" -->

kitaone
質問者

お礼

たしかに <!--#config timefmt="%Y/%m/%d(%a)" --><!--#echo var="DATE_LOCAL" --> と記述すると、今の状態でも、「2014/11/20(Thu)」と文字化けせずに表示されます。 しかしながら、質問の通り、前はちゃんと年月日の表示が出来ておりました。 <!--#config timefmt="%Y年%m月%d日(%a)" --><!--#echo var="DATE_LOCAL" --> →「2014年11月20日(Thu)」   ↑このように文字化けしない方法はどうしたらよいのでしょうか?

すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

そのHTMLの文字コードを確認してください。 また、単純に <!--#config timefmt="%Y/%m/%d" --> だとよいはずです。 なお、 「SSIはユーザー権限で動作しますのでシステム系のコマンドや 他のディレクトリにあるCGIなどは動作しません。 日付を表示したい場合はJavaなどを使用していただきますようお願いいたします。」 はとても、トンチンカンです。

kitaone
質問者

お礼

HTMLの文字コードは、シフトJISでメタタグの所にcharset=Shift_JIS"としています。 で、教えていただいたように、 <!--#config timefmt="%Y/%m/%d" --> だけだと、何も表示されません。 ブロバイダの回答は、JavaScriptで日付を表示するくらいならSSIのページの意味がないし、あとは何を言っているのか分かりません。 とりあえず、ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A