Webコンサルタントの愚痴とアジャイル,生産性向上,Trac,オープンソースなどの与太話
以前に僕が報告したのだが、2.0.3以前のバージョンではinc/Init.phpの中で、
html_entity_decodeを文字コードの指定なしに指定していたため、先頭が空白文字のみで終わる行について文字化けしてしまう不具合があった。
で、2.0.3では以下のように修正されている。(inc/Init.phpの500行目付近)
実はこれでは対策が不十分ぽい。
というのも、呼び出し履歴を見る限り、$PMF_LANG['metaCharset']が画面のアクセスのタイミングでは正しく言語ファイルの中の$PMF_LANG['metaCharset']を利用するように初期化されずに、場合によってはiso-8859-1に置き換わってしまうケースがあるためだ。
(簡単にいうと初期化タイミングがおかしそう)
とりあえず暫定で対応するのであれば、以前のエントリにあるように
にしておく必要がある。
本家サイト。11/18付け。
2007-11-18
The phpMyFAQ team is pleased to announce phpMyFAQ 2.0.4, the "I Am Trying To Believe" release. This release added a Thai translation, some DiggIt! and French translation fixes and many minor bugfixes.
ということで、2.0.4がリリースされた。主な変更点は
本家サイトより。
8/18にphpMyfaq2.0.3がリリースされた。このバージョンでは多数の細かい不具合(用語集、タグ、Ajax検索など)が修正されている。
修正されたファイルは下記のファイルだ。
#オイラのcontributeも無事取り込まれてた(^^)
おいらがレポートした2件について、phpMyFaq2.0.3と2.5.0-devのCVSに取り込まれた。
ということで、以前にこのブログで報告している
は修正された。これでとりあえず日本人は困らないはず。
報告内容
https://thinkforge.org/tracker/index.php?func=detail&aid=1488&group_id=22&atid=169
https://thinkforge.org/tracker/index.php?func=detail&aid=1489&group_id=22&atid=169
まず、FPDFのサイトから日本語対応バージョンをダウンロードする
http://www.fpdf.org/phorum/read.php?f=1&i=7977&t=7977
にアクセスし、japanese.zipを取得
取得後解凍し、fpdf.phpが置いてある場所に解凍後のファイルを配置する
以降、phpMyFaqのソースファイルを修正する。
修正対象はphpmyfaq直下のpdf.phpおよびinc\PMF_ExportにあるPdf.phpの2ファイル。
inc\PMF_Export\Pdf.php
28行目
を以下に変更
またフォント指定が全てArialなので、
となっている箇所を全て
に変更する。
またFooter()関数内で、$PMF_LANG["ad_gen_page"]という変数を直接PDFに出力しているが
そのままでは文字化けするので、この文字列をSJIS変換する。
を以下に変更
次に直下のpdf.phpを修正する。
考え方は一緒で、全ての文字列をSJISに変換することと、フォント指定のArialをSJISに変更する。
こちらは対象箇所が多いので割愛。
今回の修正ファイルはここから入手可能です。
ライセンスはオリジナルに準じます。(MPL)
全部はテストしきれていないのでご利用は計画的に自己責任で。
とりあえず、さらに色々見つかったので、バグトラッキングシステムに入力してみた。
うまくいけば今後のバージョンで取り込まれるかも。
#久しぶりに英語書いたので、あまりの書けなさに愕然とした(--;
savequestions.phpの76行目付近
を
$additional_header = array();
$additional_header[] = 'MIME-Version: 1.0';
$additional_header[] = 'Content-Type: text/plain; charset='.$PMF_LANG['metaCharset'];
if (strtolower($PMF_LANG['metaCharset']) == 'utf-8') {
$additional_header[] = 'Content-Transfer-Encoding: 8bit';
}
$additional_header[] = 'From: "'.$name.'" <'.$questionData['ask_usermail'].'>';
// Let the category owner get a copy of the message
if ($IDN->encode($faqconfig->get('main.administrationMail')) !=
$oUser->getUserData('email')) {
$additional_header[] = "Cc: ".$oUser->getUserData('email')."\n";
}
$body = $questionMail;
$body = str_replace(array("\r\n", "\r", "\n"), "\n", $body);
if (strstr(PHP_OS, 'WIN') !== NULL) {
// if windows, cr must "\r\n". if other must "\n".
$body = str_replace("\n", "\r\n", $body);
}
if (ini_get('safe_mode')) {
mail($IDN->encode($faqconfig->get('main.administrationMail')),
$subject,
$body,
implode("\r\n", $additional_header));
} else {
mail($IDN->encode($faqconfig->get('main.administrationMail')),
$subject,
$body,
implode("\r\n", $additional_header),
'-f'.$questionData['ask_usermail']);
}
に変更する。同件があるような気がする。
要はメール送信時のヘッダがちゃんとエンコードされていないっつうこと。
ajaxresponse.phpの52行目を以下の通り修正する。
を
に修正する。これで文字化けしなくなる。
微妙にしょぼい。
#7/16追記
BTSに報告したところ、2.0.3で修正した、との回答をもらいましたので、上記は2.0.2まで有効。
それ以降のバージョンで発生した場合は別の問題。
inc/Init.phpの497行目付近の
を
に変更する。
理由はhtml_entity_decode関数のデフォルト文字コードがISO-8859-1であるため。
分かると成程だが、結構嵌った。。。
#7/16追記
BTSに報告したところ、2.0.3で修正した、との回答をもらいましたので、上記は2.0.2まで有効。
それ以降のバージョンで発生した場合は別の問題。
オープンソースのFAQ管理ソフトウェアであるphpMyFaqの最新版2.0.2が7/8にリリースされた。
主な変更点は以下の通り。
ということで、ソースを見てみたが、この間、オイラが掲載した、用語集の箇所で二重エスケープされる問題と、TinyMCEを利用して空白を挿入した場合に文字化けしてしまう件は直っていない・・・。
日記 PHP オープンソース Linux Trac Perl wordpress フリーソフト 自宅サーバ phpMyFaq Plugin Delphi 書評 apache eclipse Subversion Firefox セキュリティ アジャイル プラグイン mojavi Ruby Ajax/Web2.0 CakePHP Zope フレームワーク サーバ 文字化け scuttle OpenVZ 自宅 phpBB 仮想化 翻訳・日本語化 CMS ApacheDS LDAP 生産性向上 hacks CodeIgniter Agile・生産性向上 レビュー XAMPP Excel SBM 言語ファイル 修正 Ajax taskfreak mod_security ダウンロード HTML::FillInForm 情報共有 格安 レンタル アンケート API PhpScheduleIt 翻訳