これは、自分の環境だけの問題のような気がするのですが、カレンダーの「日 月 火 水 木 金 土 」が「・/th> 五/th> ・/th> 折/th> ・/th> ・/th> 曇/th> 」のように文字化けすることがあります。原因に心当たりがありましたら教えて下さい。
> カレンダーの「日 月 火 水 木 金 土 」が> 「・/th> 五/th> ・/th> 折/th> ・/th> ・/th> 曇/th> 」> のように文字化けすることがあります。> 原因に心当たりがありましたら教えて下さい。今のところ、原因で思い当たるものがありませんが、「文字化けすることがあります」という事は、常に文字化けするわけでは無いって言う事なんでしょうか?
返答ありがとうございます。文字化けですが、数回に一回くらいの割合で発生します。こちらで少し調査してみたところ、mb_internal_encoding() で内部文字エンコーディングの取得すると"EUC-JP" が返る時と、"SJIS" が返る時がありました。文字化けするときは "SJIS" の時です。(なぜコロコロと変わるかは詳しくないのでわかりません・・・。 HTTPサーバの設定?)以前は出なかった現象なので、古いソースと比べるとmb_internal_encoding("euc-jp") がコメントになっているようですのでこの辺りの影響でしょうか?調査している時に気づいたのですが XOOPS に xoops_substr() と言う関数があるようですので、mb_substr() をこれに入れ替えればOK でしょうか・・・
相乗りで、質問させてください。僕のカレンダーは、曜日がすべて?マークになっています。どこか設定がおかしいのでしょうか?
> こちらで少し調査してみたところ、> mb_internal_encoding() で内部文字エンコーディングの取得すると> "EUC-JP" が返る時と、"SJIS" が返る時がありました。> 以前は出なかった現象なので、古いソースと比べると> mb_internal_encoding("euc-jp") がコメントになっているようですので> この辺りの影響でしょうか?この部分に関しては、XOOPSの日本語環境がEUC-JPで動作しているはずだという前提のもと、もともとのWordPressMEには有ったのですがコメントアウトしました。国際化対応する上では余分になってしまいますので・・・でも、もし動作が不安定ならこのコメントを元に戻していただいても他への悪影響は無いと思います。なんでSJISになる場合があるのかは不明ですけど・・・> XOOPS に xoops_substr() と言う関数があるようですので、> mb_substr() をこれに入れ替えればOK でしょうか・・・xoops_substrは、内部でmb_strimwidthという関数を呼んでいるようでが、これは文字列を文字幅(SJISでのバイト数と同じ)で切り捨てる関数です。カレンダの曜日表示においては、日本語では「月曜日」→「月」英語では「Monday」→「M」と最初の論理的な一文字目を切り出したいため、mb_substr関数を使っています。xoops_substrで切り出すとすれば、日本語の場合は2桁、英語の場合は1桁と違うパラメータで呼んでやらないと上記のような切り出しは出来なくなります。
dashkickさんようこそ!> 僕のカレンダーは、曜日がすべて?マークになっています。> どこか設定がおかしいのでしょうかあらら、何ででしょうね?もしかしてdashkickさんの環境のPHPにはmb_stringエクステンションが導入されていないとかってことは無いですよね?
> xoops_substrは、内部でmb_strimwidthという関数を呼んでいるようでが、すみません、そうですね・・・ mb_internal_encoding() と mb_substr() を読んでいるだけの関数かと勝手に考えていました。mb_internal_encoding("euc-jp") を使用するようにします。
このプログラムは KENT 氏の yybbs を xoops(PHP) に移植したものです - KENT -