0

まず第一に、私のデータベースエンコーディングはutf-8です。

メソッドFußballindex.php介して文字列をに送信する必要があります。POSTを使用してHTMLフォームを使用して送信するとaction="index.php"、として送信されFu%DFball、正しく返すためにhtmlentities()phpファイルで使用します。それは素晴らしい働きをします。jQuery / AJAXを使用して送信しようとすると、問題が発生します。

$("#Form").submit(function() {
$.ajax({
    type: "POST",
    dataType : "text",
    url: "index.php", //Does the validation
    data: $("#Form").serialize(),
    success: function(data) {
        alert(data)
    },
});
return false;
});

として送信され、としてFu%C3%9Fball返されFuÃます。私はそれをデコードするか、別の方法で送信するためにすべてを試しました。さまざまなシナリオで返されるものは次のとおりです。

htmlentities()phpファイルで通常どおりに送信します。

FuÃ

phpファイルのhtmlentities()有無にかかわらず、通常どおりに送信しますhtmlspecialchars()

Fußball

utf8_decode()phpファイルで正常に送信

Fu

escape()文字列を送信する前に、encodeURIComponent()またはcontentType: "utf-8"jQueryスクリプトで、を使用すると、.phpファイルが理解できない方法でフォームが送信されますが、それだけでなく、文字列はとして送信されFu%C3%9Fballます。

また、ファイルタイプごとに適切なコマンドを使用して、すべてのドキュメントをとしてエンコードしましたutf-8が、違いはなかったので、最初からすべてだったと思いutf-8ます。

4

1 に答える 1

1

WebページのエンコーディングもUTF-8であることを確認してください。

デフォルトでISO-8859-1の場合、経験上、UTF-8文字が誤って解析されます。

確認するには、ページを開くときにブラウザの「エンコーディング」メニューを確認してください。これが、使用されるエンコーディングの最後の言葉です。

サーバーがHTMLファイルのISO-8859-1コンテンツタイプヘッダーを出力するように構成されている可能性があります。ApacheのデフォルトのエンコーディングをUTF-8に変更する方法を参照してください。それを修正する方法について。

于 2013-03-16T12:57:46.467 に答える