PHPに惚れました

今でも多分惚れてます。

さくらレン鯖でMDB2のquote,escapeメソッドでエスケープ処理時に文字化けする#2

あれから色々調べて行き着いたところ。

MDB2のescape()やquote()は内部でmysql_real_escape_string()を使用してる。

このmysql_real_escape_string()はMysqlののcharacter set clientを元にエスケープ処理してくれる。

つまりMysqlとクライアントの文字コードの設定によっては文字化けが起こったり正しくエスケープしてくれなかったりするみたい。

でもcharacter set clientの値utf8になってるんだけどなぁ・・・
それでもまだ化ける。

スクリプト側で対応するしかないのかな。

PHP: mysql_real_escape_string - Manualから引用

<?php
//擬似エスケープ処理関数
function escape($str){
	$search=array("\\","\0","\n","\r","\x1a","'",'"');
	$replace=array("\\\\","\\0","\\n","\\r","\Z","\'",'\"');
	return str_replace($search,$replace,$str);
}
?>