prototypeベースでサブウィンドウを表示するwindows.jsは高機能で実装も簡単ですが、prototypeのバージョンが1.6になったころから、IE6及びIE7でエラーを吐くようになりました。
原因は、windows.jsの_checkIEOverlapping関数にありこの関数の
if(!this.iefix && (navigator.appVersion.indexOf('MSIE')>0)...){
}
の部分をコメントアウトすることで、エラーを吐くことを防止することができます。
もはや古典となったprototype.jsですが、使い慣れた環境はなかなか捨てきれないものです。
一般アプリではC++、WebアプリではPHPとJavaScriptを主に使用してプログラムを構築しています。このブログではシステム構築時に困ったこと、そしてその解決方法などを中心に投稿していこうと考えています。 ちなみに、PHPでよく利用しているライブラリーは、Zend FrameWork(MVCモデルとしては利用していません)、JavaScriptはprototype.jsを使ってプログラミングしています。
2009年12月24日木曜日
Zend_Mailの文字化け対策
Zend_Mailは非常に便利ですが、全角の送信者名や受信者名が文字化けします。
原因は、 送信者名や受信者名をUTF-8からISO-2002-JPに変換した後、それをsetFrom及びaddTo関数の引数として渡すことにより生じています。
setFrom,addTo関数では、その内部で_filterName関数によりサニタイジングしていますが、その内容は
protected function _filterName($name)
{
$rule = array("\r" => '',
"\n" => '',
"\t" => '',
'"' => "'",
'<' => '[',
'>' => ']',
);
return trim(strtr($name, $rule));
}
ですので、ISO-2002-JPでは、バケバケ文字の出来上がりとなります。
とりあえず、送受信者名のサニタイジングは事前に自前で処理し、 _filterNameはコメントアウトして文字化け対策は完了です。
原因は、 送信者名や受信者名をUTF-8からISO-2002-JPに変換した後、それをsetFrom及びaddTo関数の引数として渡すことにより生じています。
setFrom,addTo関数では、その内部で_filterName関数によりサニタイジングしていますが、その内容は
protected function _filterName($name)
{
$rule = array("\r" => '',
"\n" => '',
"\t" => '',
'"' => "'",
'<' => '[',
'>' => ']',
);
return trim(strtr($name, $rule));
}
ですので、ISO-2002-JPでは、バケバケ文字の出来上がりとなります。
とりあえず、送受信者名のサニタイジングは事前に自前で処理し、 _filterNameはコメントアウトして文字化け対策は完了です。
登録:
投稿 (Atom)