そのため、Ajax を介して HTML ページから PHP ページにデータを送信しようとしています。
それは私が使用しているjQueryコードの一部です:
$.ajax({
url: "test.php",
type: "POST",
data: {
name: "João"
}
}).done(function (data) {
alert(data);
})
ご覧のとおり、送信するパラメーターは「João」です。Ajax リクエストを作成する前に、バックグラウンドで jQuery がエンコードします。「João」は、二重エンコードされた UTF-8 である「Jo%C3%A3o」になります。
私の問題は、リクエストが送信され、PHP がバックグラウンドでデコードしようとしたときに発生します。$_POST を使用すると、PHP が自動的に 1 回だけデコードするため、"João" ではなく "João" になります。これは、PHP がすべての % を個別にデコードするために発生するため、%C3はÃになり、%A3は£ になります。
utf8_decode() を介して手動でデコードしようとすると機能しますが、より良い解決策があるかどうかを知るためにここにいます。私が本当に必要としているのは、PHP がデータを正しくデコードする方法です。データが二重にエンコードされていても、三重にエンコードされていてもです。