0

私がやろうとしているのは、mysql データベースからのデータをフォーム内に表示することです。データを取得する db マネージャーへの ajax 呼び出しを通じてデータを取得します。

  • まず、私のページのメタタグは次のとおりです。

    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

  • 2番目:ajax呼び出しでエンコーディングを指定しようとしました(私はjqueryを使用しています)また、scriptCharsetとコンテンツタイプcharsetのutf8で試しました:

    ` $('.btn-group#couleur > button').click(function(){
          $.ajaxSetup({
             async:false,
             scriptCharset: "iso-8859-1",
            contentType:"application/json; charset=iso-8859-1"
          });`
    </li>
    

  • 3番目:私のテーブルは次のSQLエンコーディングで構築されており、他のテーブルでは正常に機能しています: `

    CREATE TABLE IF NOT EXISTS `pays` (
      `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
      `pays` varchar(30) COLLATE latin1_general_ci NOT NULL,
      PRIMARY KEY (`id`)
    ) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ;
    `
    

  • Final : 生成される html は次のとおりです。

    `<select class="span8" name="pays">
       <option value="11">Chili</option>
       <option value="5">Espagne</option>
       <option value="4">�tats-Unis</option>
       <option value="2">France</option>
       <option value="3">Gr�ce</option>
       <option value="6">Italie</option>
       <option value="9">Nouvelle-Z�lande</option>
       <option value="7">Portugal</option>
    </select>`
    

  • 私が間違っているかもしれないことについて何か推測はありますか?

    4

    3 に答える 3

    1

    データベースからのエンコーディングと HTML 出力が一致しません。ブラウザーに UTF-8 を記述することを伝えますが、データベースから latin1/iso-8859-1 をフェッチし、それを <option> のフィールドに直接書き込みます。うまくいきません。

    iconv() のような変換関数を使用する必要があります。これはおそらく、データベースからデータを取得して Ajax 呼び出しにプッシュする関数で最もよく行われます。言語が何かを知らなかったので、自分で調べる必要があります。

    注: Ajax 呼び出しにcontentType:"application/json; charset=utf-8"を指定しても、非常にスマートな Ajax 呼び出しがない限り、エンコーディングは自動的に変換されません...

    于 2013-01-13T20:31:18.407 に答える
    0

    本当の犯人は、私の ajax 呼び出しから json 配列を取得するときだったことが判明しました。json は、文字セットが指定されていない空白のページにダンプされ、デフォルトで utf8 に設定されていました。

    ヘッダーを追加し、さらにjsonをフィルタリングするための追加の解析を行い、jsonを正しいエンコーディングで作成しました。ただし、iso-8859-1に設定する必要がありました

    于 2013-01-17T13:25:18.247 に答える
    -1

    JvOの言うことをするかutf8_decode('your weird chars')。両方しないでください!

    于 2013-01-13T20:33:58.433 に答える