Laravel,PHP:json_encode在Laravel和原始PHP中给出了不同的结果

时间:2014-09-26 08:04:06

标签: php mysql json laravel-4

在我的 mysql 数据库表中有utf-8个字符。(我的表格排序是 utf8_unicode_ci

অà§à¦¯à¦¾à¦¸à¦¿à¦¡à¦¿à¦¤à¦¿ কমিয়ে উরà§à¦¬à¦°à¦¤à¦¾ ফিরিয়ে আনতে কোনটি বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়?  

现在,当我使用 Laravel模型 json_encode 获取表格列时,我得到了

"\u00e0\u00a6\u2026\u00e0\u00a7\u008d\u00e0\u00a6\u00af\u00e0\u00a6\u00be\u00e0\u00a6\u00b8\u00e0\u00a6\u00bf\u00e0\u00a6\u00a1\u00e0\u00a6\u00bf\u00e0\u00a6\u00a4\u00e0\u00a6\u00bf \u00e0\u00a6\u2022\u00e0\u00a6\u00ae\u00e0\u00a6\u00bf\u00e0\u00a7\u0178\u00e0\u00a7\u2021 \u00e0\u00a6\u2030\u00e0\u00a6\u00b0\u00e0\u00a7\u008d\u00e0\u00a6\u00ac\u00e0\u00a6\u00b0\u00e0\u00a6\u00a4\u00e0\u00a6\u00be \u00e0\u00a6\u00ab\u00e0\u00a6\u00bf\u00e0\u00a6\u00b0\u00e0\u00a6\u00bf\u00e0\u00a7\u0178\u00e0\u00a7\u2021 \u00e0\u00a6\u2020\u00e0\u00a6\u00a8\u00e0\u00a6\u00a4\u00e0\u00a7\u2021 \u00e0\u00a6\u2022\u00e0\u00a7\u2039\u00e0\u00a6\u00a8\u00e0\u00a6\u0178\u00e0\u00a6\u00bf \u00e0\u00a6\u00ac\u00e0\u00a7\u008d\u00e0\u00a6\u00af\u00e0\u00a6\u00ac\u00e0\u00a6\u00b9\u00e0\u00a6\u00be\u00e0\u00a6\u00b0 \u00e0\u00a6\u2022\u00e0\u00a6\u00b0\u00e0\u00a6\u00be \u00e0\u00a6\u00b9\u00e0\u00a7\u0178? "  

但是,如果我使用 mysqli准备语句在普通PHP 中获取列并使用 json_encode ,我会得到

"\u0985\u09cd\u09af\u09be\u09b8\u09bf\u09a1\u09bf\u09a4\u09bf \u0995\u09ae\u09bf\u09df\u09c7 \u0989\u09b0\u09cd\u09ac\u09b0\u09a4\u09be \u09ab\u09bf\u09b0\u09bf\u09df\u09c7 \u0986\u09a8\u09a4\u09c7 \u0995\u09cb\u09a8\u099f\u09bf \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09be \u09b9\u09df? "   

我想要这个json,但laravel会产生另一个。

Laravel代码:

app/config/database.php
'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',  

//Model
class Problem extends \Eloquent {
    protected $fillable = [];
    public $timestamps = false;
    protected $table = 'problems';

}
// Controller function
public function test()
{
    $tmp = Problem::find(33551);
    return json_encode($tmp['body']);
}

纯PHP代码:

$sql = "SELECT body FROM problems WHERE id = ?";
$id = 33551;
$statement = $mysqli->prepare($sql);
$statement->bind_param("i", $id);
$statement->execute();
$ret = "";
$statement->bind_result($ret);
$statement->fetch();
echo json_encode($ret);  

为什么json_encode在laravel中工作如此奇怪。我该如何解决这个问题呢? 我正在使用Laravel 4.2
请帮忙......

1 个答案:

答案 0 :(得分:0)

与json_encode没有区别,你应该检查你从两个方面得到的结果,

并且Problem::find(33551)不会获得列“body”,它将获得id为33551的整行(一个对象)..

你应该尝试var_dump($ tmp),看看你得到了什么。

使用$tmp->body

获取列体