DittoCalの文字化けがまたしても治らない 【解決済み】
DittoCalの文字化けがまたしても治らない
MODx Evolution 1.0.3において、DittoCalの文字化けがまたしても治らなくて往生しています。某氏が公開されていた「DittoCalで日本語が上手く表示されないので改造してみた」など試すも曜日の部分が化けてしまってます。以前トライした時も結局うまく動かせず別のCGIを使ってやりすごした事があります。うまく表示されている方もおられるようなのですが・・・アドバイス・解決策をご存知の方おられましたらよろしくお願いいたします 。
Re: DittoCalの文字化けがまたしても治らない
曜日が化けるのはロケールの設定が合ってないのが原因であることが多いです。MODx日本語版ではロケールは日本語仕様で指定してありますが、これがきかない場合はあれこれ試す必要があって面倒かかるので・・
dittocalの上記箇所を
こうするとよいかも。(実際動くかどうかは試してないです)
コード: 全て選択
$day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day name
コード: 全て選択
$weeknames = array('日','月','火','水','木','金','土');
$current_weekname = gmstrftime('%w',$t);
$day_names[$n] = $weeknames[$current_weekname];
Re: DittoCalの文字化けがまたしても治らない
いつもお世話になっております。
教えていただいたコードを試させていただきましたが、解決にはいたっておりません。
http://www.speed-fish.com/columns/dev/280
上記URLでいただいたコード中で、
Dittocalスニペットの上記部分を、下記に
また、
の部分を下記にしておられます。
作成中MODXサイトで設定できる部分はUTF-8になっているはずです。が、どうもDittocalが生成するカレンダー中で文字化けする「月(英語)」「曜日(英語)」の部分が文字化けした文字が更に文字化けしているような印象です(昔のMODXでよくあった感じです)。機能的には日付から記事にしっかりリンクしますし申し分ないのですが・・・。ロケールとなってくると画面表示の手前で差し替える、という感じでは難しいのでしょうか・・・。2バイト文字が難しくても「April」や「Monday」が文字化けるのが私には分かりません。勉強します。参考にさせていただきます、ありがとうございます。
教えていただいたコードを試させていただきましたが、解決にはいたっておりません。
http://www.speed-fish.com/columns/dev/280
上記URLでいただいたコード中で、
コード: 全て選択
$title = htmlentities(ucfirst($month_name)).' '.$year; #note that some locales don't capitalize month and day names
コード: 全て選択
$title = htmlentities(ucfirst($month_name),ENT_QUOTES,$modx->config['modx_charset']).' '.$year; #note that some locales don't capitalize month and day names
コード: 全て選択
$calendar .= '<th abbr="'.htmlentities($d).'">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>';
コード: 全て選択
$calendar .= '<th abbr="'.htmlentities($d,ENT_QUOTES,$modx->config['modx_charset']).'">'.htmlentities($day_name_length < 4 ? mb_substr($d,0,$day_name_length) : $d,ENT_QUOTES,$modx->config['modx_charset']).'</th>';
Re: DittoCalの文字化けがまたしても治らない 【解決済み】
http://hogebar.seesaa.net/article/49062775.html
上記の記事を参考にさせていただきました。
gmstrftimeの戻り値が日本語なのがよくないらしいです。
今回特に曜日が日本語でなくても良かったので以下のようにしました。
根本的な解決ではありませんが・・・
yama様にはお忙しい時に情報をありがとうございました。本当にいつもお世話になっております。
上記の記事を参考にさせていただきました。
gmstrftimeの戻り値が日本語なのがよくないらしいです。
今回特に曜日が日本語でなくても良かったので以下のようにしました。
コード: 全て選択
- $title = htmlentities(ucfirst($month_name),ENT_QUOTES,$modx->config['modx_charset']).' '.$year.%w;
+ $title = htmlentities($month).'月 '.$year;
コード: 全て選択
- $day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day name
+ $day_names[$n] = ucfirst(date('l',$t));
yama様にはお忙しい時に情報をありがとうございました。本当にいつもお世話になっております。