2

jQuery form pluginを使用してデータを送信するフォームがあります。そこから、サーバー側の処理を経て、最終的に MySQL データベースに保存されます。

これらの文字を送信すると、 (データベースにヒットする前に)áâãäïサーバーに送信されます。áâãäï'日本語の文字などでも同様のことが起こります。

フォーム エンコーディング、ページ エンコーディング、php サーバー側エンコーディング、db エンコーディングに UTF-8 と ISO-8859-1 の両方を試しました。まだ運がありません。

4

2 に答える 2

2

内部的には、JavaScriptはUTF-16文字列、および文字をUTF-8にエンコードするなどの関数で動作encodeURIComponent()するため、問題となるのはおそらくJavaScriptコードではありません。問題はPHPコード内にある可能性があります。

  • サーバーによって送信されるすべてのページ(フォームが存在するページを含む)には、ヘッダーが必要Content-type: text/html;charset=UTF-8です。これは、Firebugのネットパネルを使用して確認できます。

  • クエリを実行する前に、必ずMySQL接続の文字エンコードを設定してください。それ以外の場合、MySQLはUTF-8文字列の各バイトをLatin-1文字として解釈します。これにより、説明内容が簡単に発生する可能性があります。次のようなコードを使用します。

    mysql_query("SET NAMES 'utf8'");    // works in old versions of PHP (< 5.2)
    mysql_set_charset('utf8',$conn);    // works in PHP 5.2+
    
  • 一部の(すべてではない)PHP文字列関数がUnicodeテキストを壊してしまうことに注意してください。

于 2011-01-26T22:05:42.123 に答える
1

おそらくWORD(ISO-8859-1)から文字が貼り付けられています。AjaxはUTF-8のみを想定しているため、サーバーに送信する前にクライアントで変換する必要があります。

参照:JavascriptでエンコーディングをUTF-8からISO-8859-2に変更

于 2011-01-26T21:32:49.743 に答える