0

私はこのようなコードを持っています

            <?php

            $jsonurl = "http://api.tamilmagazine.com/";
            $json = file_get_contents($jsonurl,0,null,null);
            $json_output = json_decode($json);
            print_r($json_output);
            ?>

上記のコードは、json レスポンスを次のように返します。

        stdClass Object
        (
            [mag_id] => 1
            [mag_name] => ஆனநà¯à®¤ விகடனà¯
            [sid] => 544
            [bpath] => http://www.tamilmagazine.com/
            [api_path] => http://api.tamilmagazine.com/
            [categories] => Array
                (
                    [0] => stdClass Object
                        (
                            [cat_id] => 25
                            [cat_name] => அரசியலà¯
                            [articles] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [aid] => 20053
                                            [a_title] => தலையஙà¯à®•à®®à¯ - கறà¯à®±à¯à®•à¯ கொடà¯à®™à¯à®•à®³à¯ மேதைகளே...
                                            [p_no] => 7
                                            [weburl] => tamilmagazine/msite.php?type=article&mid=1
                                        )



                            . . .. .. . . . . . . . . . . . . . . . . . . . and so on . . . .

指定された API (http://api.tamilmagazine.com/) をブラウザーで表示すると、このような正しいフォントが取得されます。

            {
                "mag_id": "190987",
                "mag_name": "தென்மேற்கு பருவமழை கேரளாவில் வரும் 5ம் துவங்கும் ",
                "sid": "44",
                "bpath": "http://www.tamilmagazine.com/",
                "api_path": "http://api.tamilmagazine.com/",
                "categories": [
                    {
                        "cat_id": "25",
                        "cat_name": "தென்மேற்கு பருவமழை கேரளாவில் வரும் 5ம் துவங்கும் ",
                        "articles": [
                            {
                                "aid": "3",
                                "a_title": "தென்மேற்கு பருவமழை கேரளாவில் வரும் 5ம் துவங்கும் ...",
                                "p_no": "7",
                                "weburl": "msitee.php?type=article&mid=1"
                            },



            .  .. . . . .   and so on. . ... 

つまり、私の API URL はブラウザーで正常に動作しますが、php 解析後の API URL は私のブラウザーでは機能せず、いくつかの特殊文字が表示されます (Unicode か ascii かわかりません)。

ご意見をお聞かせください。

ありがとうハーン

4

2 に答える 2

2

これはおそらくサーバーでは正しいですが、ブラウザで見ると間違っているように見えます。出力の文字エンコーディングを指定しない場合、または php.ini の設定が間違っている場合、ブラウザは推測し、多くの場合間違っています。

テストするいくつかの方法:

  1. ソースを表示して「ソース」を確認します。(ただし、互換性のあるテキスト エディタでソースを表示できることを確認してください。そうしないと、同じことが起こる可能性があります)

  2. デバッグ出力を行う前に、最初に正しい HTML ヘッダーを追加してエンコーディングを設定します。

echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>';   // Set the charset appropriately! Looks like a cyrillic set?
print_r($json_output);
echo '</body></html>';
  1. 次に確認することは、PHP 出力に正しいヘッダーがあることです。php.ini には、出力のデフォルト設定「default_charset」があります。これが空白または間違っている場合は、php.ini または ini_set() を使用して適切な値に設定してください。これにより、php に文字エンコーディング ヘッダーを指定するように指示されます。

  2. header() を使用してエンコーディング ヘッダーを指定することもできますが、php.ini ディレクティブが衝突する可能性があるため、どちらかを使用してください。

  3. 最後に、それが失敗した場合は、手動でデコードする必要があります。これにはサンプル関数があるため、「contacto at hardcode dot com dot 25-Nov-2010 01:53」によるマニュアル (http://php.net/manual/en/function.json-decode.php) のコメントを確認してください。


実際の文字列を処理するときに使用できる他のトリックは、使用することです

echo utf8_decode(print_r($json_output, true));

これは、オリジナルが UTF-8 である場合、ブラウザーがより容易に理解できる ISO に変換される可能性があるためです。おそらくそれは utf-8 ではありません。それ以外の場合、ブラウザはそれを適切に理解して表示する必要がありますが、他のすべてが失敗した場合は試してみる価値があります。

于 2012-06-02T06:01:02.440 に答える
0

これは私の編集した PHP コードです。

<?php
        header("Content-type: text/html; charset=utf-8");
        $jsonurl = "http://api.tamilmagazine.com/";
        $json = file_get_contents($jsonurl,0,null,null);
        $json_output = json_decode($json);
        print_r($json_output);
        ?>

出来た。コンテンツ タイプについて言及するのを忘れていました。

于 2012-06-02T06:23:09.747 に答える