バックエンド Postgresql データベースを備えた Zend Framework に PHP サイトがあります。主な文字エンコーディングは UTF-8 です。
エラーログを確認したところ、奇妙なエントリが見つかりました。私の URL は次のとおりです: www.mydomain.com/schuhe-für-breite-füsse
ただし、誰か (またはボット) が次の URL にアクセスしようとしました: www.mydomain.com/schuhe-f\xc3\xbcr-breite-f\xc3\xbcsse/
上記のようなものは初めて見ました。私のページでは 2 つのことが起こっています: 1) 上記の URL が CMS に対してクエリされます。これは何らかの理由で正常に機能します。データベースでこの SEF URL を見つけようとしたときに、Postgresql がバイト エンコードされていることを再確認し、元に戻すと思います。
2) ページで Ajax リクエストが行われ、同じ SEF URL が渡されます。これは失敗します。スラッシュが Javascript で問題を引き起こしていると思います。
これを避けるために、このようにエンコードされた URL をデコードしたいと思います。ただし、次のコードの簡単なテストでは、何もデコードされませんでした:(
$landing_sef_url = $this->_getParam('landing_sef_url');
$utf8=html_entity_decode($landing_sef_url);
$iso8859=utf8_decode($utf8);
$test3 = html_entity_decode($landing_sef_url, 1, "ISO-8859-1");
$test4 = urldecode($landing_sef_url);
echo utf8_decode("$landing_sef_url");
echo "<br/><br/>";
die($landing_sef_url . " -- $utf8 -- $iso8859 <br/>$test3<br/>$test4");
オンラインのさまざまな投稿で上記を見つけましたが、それらはすべて同じ結果を出力します-schuhe-f\xc3\xbcr-breite-f\xc3\xbcsse
どんな助けでも大歓迎です。どうもありがとう!