日本語対応に関する改造です。今回の改造差し替えファイルは、公開前の動作確認をほとんどしていませんので、問題が起こるかもしれません。使用される際は、各人でテストされた上でご利用いただきますようお願いします。以下、説明(ほぼ以前の使い回し)と、改造差し替えファイルのダウンロードリンクを記述します。使ってみたいだけという方は「前置き」以降の説明文は読まず、「はじめに」と「改造差し替えファイル」だけ読んで利用していただいて構いません。どこに変更を加えていて、どの機能は手付かずなのか知りたくなった時など、それ以外も参照してみてください。(例えば、多くの方が興味があるのに、私の改造で手を付けていない部分の最たるものは、「メールによる記事投稿」機能の日本語文字化けです。修正のための動作検証に手間もかかりますし、たとえ文字化けを直しても、主に需要のある添付ファイル付きメール投稿、いわゆる写メール投稿には元々b2evolutionが対応していませんから、あまり必要性は無いと思っています)1月16日追記:トラックバック受信時の文字セット指定で、問題のあるものが指定されていないかどうかの簡易チェックを追加しました。5.2.6以前、4.4.9以前で運用されている場合は、新しい改造差し替えファイルに置き換えてください。私が言うまでも無いことかもしれませんが、適用する前にバックアップはちゃんと取っておいてください。ファイルとデータベースの両方を忘れずにバックアップしましょう。(JP))の選択を行ってください。table))リンクが表示されています。テーブルを削除)」でリセットを行ってください。Regional)の設定を変更する必要はありませんので、リセット後はデフォルトそのままにしておいてください。改造差し替えファイル以下が、改造部分の差し替えファイルをまとめたアーカイブ・ファイルです。差し替えファイルで既存のファイルを置き換えてください(バックアップを取るのを忘れずに)。2.4.6用の日本語メッセージファイルは作成していませんのでご注意ください。後に示す日本語メッセージファイルを別途入手して利用してください。ありますので、そちらを利用してください。Miuraさんの2.4.5用日本語メッセージファイルを使用する際は、b2evolution本体と同じディレクトリ構造でアーカイブファイルに収められているようですので、それを考慮してアーカイブを展開してください。以下は、私が作った1.8.x用の日本語メッセージファイルのアーカイブファイルです。バージョンが非常に古いので、部分的にしか日本語にならず、英語のままの部分も多く残りますが、申し訳程度、参考までに残しておきます。内に展開してください。文字化けの原因この前置きは長くてややこしい話ですし、実のところ私は完全には調査・理解できていない状態なので間違いもあるかと思います。興味のない方は読まなくて構いません。b2evolutionの文字化けにはいくつかの原因がありますが、根本的なものは、使用する文字セット(charset)の決定方法に問題があるという点です。)のみにして、ログインしていない状態でご自分のブログにアクセスしてみてください。文字化けするのが確認できるはずです。-「言語設定」で行います)b2evoでは大雑把に言って、「ウェブブラウザの言語設定」→「ログインしている場合はユーザのロケール(言語・地域)設定」→「ブログのロケール設定」、の順番でロケールを判別します。$evo_charset(内部の文字セット設定)が決定され、これは特殊な場合を除き、出力処理が終わるまで基本的に変更されません。設定されてしまいます。(Latin1)に無理な変換をして取り出す)現象が発生します。考慮されていないエスケープ処理が施されます。$evo_charset(内部の文字セット設定)は変更できませんが、$io_charset(出力時の変換文字セット設定。入力の文字セットも同一と見なされる)は「ブログのロケール設定」に合わせて変更が行われます。(UTF-8)への文字コード変換が行われます。変換する処理が行われて出力されます。出力するなら変換処理する必要も無いのですが。して多重に誤った変換が施されるせいで、文字列が原形を留めず、単なる文字セット指定ミスとは違う、ウェブブラウザ側では修復不能な文字化けが発生することになります。強制指定することにより文字化けを発生しにくくすることができるようになっていますが、完全ではありません。ヘッダの内容が特殊で上手く合致しない時など、条件によって無視される場合があります)改造の説明ここからが説明の本題です。変更部分のコードを書き写すのは、記事がやたら長くなってしまいますし面倒なので行いません。ご自身でオリジナルと私の改造版のファイルの差分を取るなどして、見比べてみてください。$io_charset(出力時の変換文字セット設定。考慮されていないエスケープ処理も行われないようになります。根本的な解決ではありませんが、確実に問題を回避できるはずです。無視されるなどして)ロケール設定からUTF-8以外の文字セット設定が混じり込む可能性が無いので、同じUTF-8統一指定でもこちらの方法のほうが信頼性が高くなります。ファイルタイプ」ページなど)、特殊な文字列置き換えとPHPコード実行処理が行われる際に、UTF-8のメッセージファイル(日本語等)で定義される文字列の一部が誤って置き換え対象となり、evalエラーを引き起こす問題の簡易的な回避策を施しています。(これは完全な対処とは言えませんので、まだ条件が合うとエラーが発生する可能性も残っています。含まれているため、文字の並び方によっては誤判定が起こります。検」など、いくつかあります。(0xA4)で囲まれた部分の始まりと終わりの文字がASCII文字であるかどうか判定するようにしました。置き換えるのはPHPコードであるはずなので、非ASCII文字が最初と最後に付くことはありえませんので。簡易処置ですが、これでも効果はあるようです。日本語メッセージファイルのほうでも、該当部分で使われることが明らかな文字列は該当する文字を文字参照に置き換えています。「削除」→「削&#38500;」など。(もし根本的な修正を考えるなら、「¤」1文字だけで範囲指定するやり方を変えてしまったほうがいいのではないかと思います。ASCIIの範囲の文字を使用すればさらに安全だと思います。blogs/inc/comments/_trackback.funcs.phpb2evolutionのトラックバック機能は、相手が同じ文字セットを使用していることを前提に作られていますので、文字セットの違うブログとのトラックバックのやり取りで文字化けを起こす可能性があります。文字セットUTF-8、EUC-JP、Shift_JISが混在する日本語のブログ間では起こりやすい問題ですので、それを防ぐための対策を施します。記載を行うようにします。これにより、仕様に沿って作られたブログでは、受け取ったトラックバックの文字セットを認識して、適切な文字コード変換をしてくれるはずです。POSTリクエストのみを使用するように変更しました。POSTリクエストを使わなければいけないことになっています。GETリクエストでのトラックバックは拒否するブログも、多くはありませんが存在するようになっています。GETリクエストを使うように作られています。「?」を含むトラックバックURLはPOSTリクエストを使用するブログでも多く存在しており、結果として、かなり多くの場合に必要も無いのにGETリクエストでトラックバックを送っていましたので、これを止めるように変更しました。三点目に、マルチバイト文字列関数を使用して(使用可能な場合)、マルチバイト文字の途中で文字を切ってしまって文字化けを起こすことの無いようにしました。記載を認識して、マルチバイト文字列関数が使用可能ならば、文字コード変換を行うようにしました。指定が無い場合でも、ブログのロケール(言語・地域設定)がja-JP(日本語)で、マルチバイト文字列関数が使用可能であれば、文字コード自動判別を行います。二点目に、マルチバイト文字列関数を使用して(使用可能な場合)、マルチバイト文字の途中で文字を切ってしまって文字化けを起こすことの無いようにしました。三点目に、一部のブログツールなどからb2evolutionにトラックバックを送信した場合、成功したにもかかわらず、失敗したと送信側で表示される問題の対処をしました。メッセージ「ok」を返していました。メッセージがあると失敗であるかのような表示をしてしまうブログがあるようです。これを、成功した場合にはメッセージ無しになるように変更しました。blogs/inc/_core/_misc.funcs.phpマルチバイト文字列関数が使用可能ならば、メール送信時のロケール(言語・地域設定)が日本語(ja-JP)で、かつメールの内容が完全にISO-2022-JP文字セットに変換可能な場合、ISO-2022-JPでメールを送信するようにしました。punycodeエンコードするようにしました。適切に設定されていない場合がありましたので、適切な設定を行うようにしています。blogs/inc/locales/_locale.funcs.phpログイン画面やインストール・データベースアップデート画面で、ウェブブラウザの言語設定を元にロケール(言語・地域設定)を自動決定するようになっていますが、誤判定が多いです。en(英語)」という順番になっていると、本来は「ja」が採用されなければならないところ、b2evolutionは2文字より5文字のロケールを優先してしまい「en-US」を採用してしまっていました。これを、順序に従って「ja」が採用されて、ロケール設定「ja-JP」になるようにしました。en-NZ(英語・ニュージーランド)」とか、同じ言語で2文字より5文字(地域付き)のほうが後に来てしまっている、あまり適切とは言えない設定になっていても、元々のb2evoの動作通り、うまく「en-NZ」を採用するはずです。b2evolution側のロケール設定で「pl-PL-utf-8」や「zh-CN-utf-8」など5文字を超えるものが、ウェブブラウザ側の言語設定「pl-PL」や「zh-CN」を完全一致と認識しない問題にも対処したつもりです。blogs/inc/sessions/model/_hitlog.funcs.php統計の検索エンジン経由アクセスの使用キーワード表示がISO-8859-1にしか対応していませんので、その文字化け対策です。文字セット指定を行って、ISO-8859-1決め打ちにならないようにしました。検索エンジン側とb2evo側で使用している文字セットが違う場合の文字化けはこれでは直りません。ロケール(言語・地域設定)が日本語になっていて、マルチバイト文字列関数が使える場合は、文字コードの自動判別も行います。2008」のような表示になってしまいます。ロケール(言語・地域設定)が「ja-JP(日本語)」の時は、これを日本語らしい形式「2008年4月8日」や「2008年4月」にするよう変更しました。スキンで独自に設定が行われている場合もあるので、この改造ですべてが変更できるわけではありません。用いられていることが原因です。使用するように変更しました。ほうが問題が少ないようです。そのまま使われているため、ISO-8859-1以外の文字セットの時に文字化けが起きます。数値文字参照「&#164;」に置き換えました。フィードバックはまだありません...フォームを読み込み中...このセクションは、javascriptが有効なブラウザで表示可能です。MUTO)が気になったことをメモしておくために設置しています。気の向くままに運用しているため、予告なく停止したり、表示がおかしくなったりすることがあります。当サイトではログの採取を行っています。