問題:
Google マップで Ajax を使用して get モードでサーバーにデータを転送すると、サーバー側で URL が文字化けして表示されます。
Zend Framework はデータを MySQL に文字化けとして保存しますが、抽出すると文字化けします。通常の中国語フォントでは
MySQL に中国語の文字を入力すると、PHP Web ページでは文字化けして表示されます。
解決策:
1. Ajax URL エンコーディングを変換する必要があります。
public function js_unescape($str)
{
$ret = ''; $len = strlen($str);
for ($i = 0; $i {
if ($str[$i] == '%' && $str[$i 1] == 'u')
{
$val = hexdec(substr($str, $i 2, 4));
if ($val else if($val 6)).chr(0x80|($val&0x3f)); 🎜>else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f)); >$i = 5;
}
else if ($str[$i] == '%')
{
$ret .= urldecode(substr($str, $i, 3) ));
$i = 2;
}
else $ret .= $str[$i];
return $ret; : $row->name =XmlController::js_unescape( $this->getRequest()->getParam('name') );
2. すべてのエンコード領域を utf8(php) または utf-8 に設定します。
MySQL には、データベース、データ テーブル、フィールド、データベース接続が含まれます。
Zend Framework には、データ接続、ビュー、HTML 出力が含まれています。
Ajax には、JavaScript、XML ファイル エンコーディング、フォント エンコーディングが含まれています。
Zend Framework データ接続のエンコード設定:
http://phpeye.com/bbs/redirect.php?fid=2&tid=81&goto=nextoldset を参照してください。
Zend_Db_Table::setDefaultAdapter($dbAdapter); > Zend_Registry::set('dbAdapter', $dbAdapter);
$dbAdapter->query("SET NAMES 'utf8'");
直接 PHP 接続の場合は、次のように設定します。 🎜>// マーカー テーブル内のすべての行を選択します
$query = "SELECT * FROM markers WHERE 1"
// この文を選択データベースの後に追加します
mysql_query("SET NAMES utf8"); ;
mysql_query ("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION='utf8_general_ci'");