1

私のデータベースには、AJAXで取得する必要のあるいくつかのテキストが格納されています。これはうまくいきますが、ëやäなどの特殊文字が含まれていない場合に限ります。このトピックについて、AJAXリクエストの文字セットを変更するように指示された記事をいくつか見つけましたが、どれもうまくいきませんでした。

私がfirebugを開始すると、ヘッダーについて次のように表示されます。

Antwoordheaders(responseheadersのオランダ語)
Cache-Control no-store、no-cache、must-revalidate、post-check = 0、pre-check = 0
Connection close
Content-Length 94
Content-Type text / html; charset = ISO-8859-15
Date Wed、26 Sep 2012 09:52:56 GMT
Expires Thu、19 Nov 1981 08:52:00 GMT
Pragma no-cache
Server Apache
X-Powered-By PleskLin

Verzoekheaders(requestheadersのオランダ語)
Accept text / html、application / xhtml + xml、application / xml; q = 0.9、/ ; q = 0.8
Accept-Encoding gzip、deflate
Accept-Language nl、en-us; q = 0.7、en ; q=0.3
認証基本c3BvdGlkczp6SkBVajRrcw==
接続キープアライブ
Content-Typetext/ html; charset = ISO-8859-15
Cookie __utma = 196329838.697518114.1346065716.1346065716.1346065716.1; __utmz = 196329838.1346065716.1.1.utmcsr =(direct)| utmccn =(direct)| utmcmd =(none); PHPSESSID = 2h4vu8gu9v8fe5l1t3ad5agp86DNT1
ホスト
www.spotids.comリファラー
http://www.spotids.com/private/?p=16ユーザー
エージェントMozilla/5.0(Windows NT 6.1; WOW64; rv:14.0)Gecko / 20100101 Firefox / 14.0.1

両方のヘッダーはcharset=ISO-8859-15について話していて、これにはëのような文字が含まれているはずですが、私には機能しません。

私がこれに使用したコード(PHP):

`$ newresult = mysql_query($ query2);    
    $ result = array();
    while($ row = mysql_fetch_array($ newresult))
    {{
        array_push($ result、$ row);
    }
    $ jsonText = json_encode($ result);
    echo $ jsonText; `
4

3 に答える 3

6
  1. ヘッダーをUTF-8に設定していることを確認してください。

    header('Content-Type: application/json; charset=utf-8');
    
  2. クエリを実行する前に、データベースへの接続がUTF-8エンコーディングで行われていることを確認してください。

    $query = mysql_query("SET NAMES 'UTF8'");
    
  3. 私の知る限り、JSONは純粋なASCIIで表現できない文字をエンコードします。そして、応答時にそのJSONをデコードする必要があります。

  4. mysql_*関数は非推奨になっているため、PDOに移行してみてください。この素敵なチュートリアルを使用してください

于 2012-09-26T10:09:06.927 に答える
1

JSON RFC-4627から:またはをJSON text SHALL be encoded in Unicode. The default encoding is UTF-8. 使用して文字列エンコーディングを変更します。mb_convert_encodingiconv

そして正しいヘッダーを送信します:

header('Content-Type: application/json;charset=utf-8');
echo json_encode($data);
于 2012-09-26T10:12:31.720 に答える
0

コンテンツタイプの肉を確認する

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
于 2012-09-26T10:10:28.400 に答える