PHPのウムラウトで間違ったエンコーディング

私はレシピテーブルを持っています:

CREATE TABLE IF NOT EXISTS `RECIPES` (
  `recipes_id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `text` varchar(2000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `count_persons` int(11) NOT NULL,
  `duration` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `date` datetime NOT NULL,
  `accepted` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`recipes_id`),
  KEY `recipes_user_fk` (`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=44 ;

挿入物:

(20, 'Hundefutter', 'Dose öffnen', 4, 10, 1, '2011-12-31 23:59:5', 0)

PHPで私はそれをjson(getByID)に解析します:

<?php
header('Content-Type: text/html; charset=utf8');
$id =  $_GET['id'];
include 'db_connect.php';
$arr = array('Data' => null,'Message' => null,'Code' => null);
        if (is_numeric($id))
        {
            //include 'db_connect.php';
            $id =  mysql_real_escape_string($_GET['id']);
            mysql_query("SET NAMES 'utf8'");
            mysql_query("SET CHARACTER SET 'utf8'");
            $sql = "Select * from RECIPES WHERE recipes_id=".$id;
            $result = mysql_query($sql,$db) or exit("QUERY FAILED!");

            while($row = mysql_fetch_array($result))
             {
                 $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['ID'] = $row['recipes_id'];
                 $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['TITLE'] = $row['title'];
                 $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['TEXT'] = utf8_decode($row['text']);
                 $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['COUNT_PERSONS'] = $row['count_persons'];
                 $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['DURATION'] = $row['duration'];
                 $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['USER_ID'] = $row['user_id'];
                 $arr['Data']['Recipes']['Recipe_'.$row['recipes_id']]['DATE'] = $row['date'];
             }
             if(count($arr['Data']['Recipes'])==1)
             {
                $arr['Code'] = 200;

             }
             else
             {
                $arr['Code'] = 404;
                $arr['Message'] = "not found";
             }

        }


        else
        {
                $arr['Code'] = 400;
                $arr['Message'] = "Bad Request";
        }
        mysql_close($db);
        echo json_encode($arr);

?>

私の問題は私がgetRecipeByID.phpを呼び出すときですか?= 20:

{"データ":{"レシピ":{"レシピ20":{"ID": "20"、 "タイトル": "ハンディフッタ"、 "テキスト": "ドーズ   \ u00f6ffnen "、" COUNT_PERSONS ":" 4 "、" DURATION ":" 10 "、" USER_ID ":" 1 "、" DATE ":" 2011-12-31   23:59:59 "}}}、" Message ":null、" Code ":200}

私はcharコードとして 'ö'を取得します。

この問題を解決するには?

ありがとう

1
あなたの問題は何ですか? \ u00f6 は有効なjsonです。
追加された 著者 hakre,

1 答え

charコードとして 'ö'を取得します。この問題を解決する方法は?

あなたはしません。 \ u00f6 はJSONの完全な合法的なエスケープコードです。 JSONが解析されると、öとして解決されます。

8
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com

JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript