文字セットに問題があり、解決策を見つけるために夢中になっています。これは私が持っているものです:
- データベース、テーブル、および各フィールドの照合として「latin1_spanish_ci」を使用したMySQLデータベースがあります。
- ヘッダー '<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">' を持つ html ファイルで、フォームがあります。ボタンが押されると、PHP に POST リクエストを送信する Ajax が呼び出されます。
- 'header('Content-type: text/html; charset=iso-8859-1');' を呼び出した PHP 頂点で。この PHP はデータベースに対してクエリを実行し、データのリストを取得します。
AJAX 呼び出しは次のとおりです。
$.ajax({ url:"llistat.php", type: "POST", data: { セクター: $("#sector").val(), cp: $("#cp").val(),州: $("#province").val(), 無料: $("#free").val() }, 成功: 関数(データ) { $("#results").html(""); $("#results").append(data); }, contentType: "application/x-www-form-urlencoded; charset=iso-8859-1" });
問題...
- PHP に charset ヘッダーを保持すると、文字はデータベースから適切に取得されますが、AJAX 呼び出しを介して送信された「離れた」文字 (アクセント、「ñ」、...) は適切に取得されません。
- charset ヘッダーを削除すると、同じ問題が発生しますが、その逆です。呼び出しからの文字は適切に取得されますが、データベースからの文字は取得されません。
- 最後に、Ajax 呼び出しを介して呼び出しを行わず、フォームを直接送信すると、すべてが適切に機能します。文字は適切に送信され、データベースからの情報も送信されます。
このすべてのプロセスの何が問題になっていますか? (最後のポイントによると) AJAX 呼び出しによる呼び出しとフォームの送信による呼び出しには違いがあると思います。しかし、その違いは何ですか?私は何を間違っていますか?
ありがとう。