在我的mysql数据库表有UTF-8字符(我的表核对是utf8_unicode_ci)Laravel,PHP:json_encode给出不同的结果在Laravel和原材料PHP
অà§à¦¯à¦¾à¦¸à¦¿à¦¡à¦¿à¦¤à¦¿ কমিয়ে উরà§à¦¬à¦°à¦¤à¦¾ ফিরিয়ে আনতে কোনটি বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হয়?
现在,当我得到。使用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? "
但如果我取纯PHP使用mysqli的准备语句中的列和使用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
请帮助...
我觉得你应该先尝试得到的结果正确编码..升级到PHP 5.4,如果你有以前的版本,并使用json_encode($沤,JSON_UNESCAPED_UNICODE);获取UTF8编码的json – montexristos 2014-09-26 08:17:42
我使用PHP 5.5,JSON_UNESCAPED_UNICODE给出了“à|...à§à|¯à|¾à|¸à.........”,但我想要“\ u0985 \ u09cd \ u09af \ u09be ........“ – palatok 2014-09-26 08:23:02
获得”à|...à§à|¯à|¾à|¸à.........“是否正常?也许你的数据有问题吗?我将重点放在这一点上,因为如果您的数据在第一时间出错,您将无法解决验证数据的问题。如果您在mysql终端或phpmyadmin中运行查询,是否会正确编码结果?如果不检查主体列是否也有utf8_unicode_ci排序规则并尝试重新插入数据 – montexristos 2014-09-26 08:30:59