2013-02-14 82 views
1

空值我有以下阵列:PHP json_encode返回从Unicode字符

Array 
(
    [BookDateID] => 4 
    [HotelName] => Adams’ Inn 
) 

输出:

{"BookDateID":"4","HotelName":null} 

任何魔法?

顺便说一句,我具有由循环通每个阵列的替代解决方案,并让它们mb_convert_encoding(STR,“HTML实体”),但我想要的字符仍然是相同的,因为我有插入到一个DB此。

 
foreach($array as $key=>$value){ 
    $array[$key] = mb_convert_encoding($value,'HTML-ENTITIES'); 
} 
+1

您的PHP文件可能不是“正确的”编码:http://3v4l.org/ipQuW – Passerby 2013-02-14 05:05:34

+0

@Passerby你是什么意思?我是否需要在我的php.ini或ini_set()上设置一些编码?像default_charset之类的东西? – 2013-02-14 05:38:17

+0

这可能不是一些配置问题;这是你的PHP _file_的编码,可能很重要。用一些编辑器(Notepad2,Notepad ++等)检查你的PHP文件的编码,并确保它是UTF-8。 – Passerby 2013-02-14 05:42:21

回答

2

json_encode需要UTF-8编码数据。确保数据是UTF-8编码的;目前它可能是Latin-1编码的。如何做到这一点取决于数据来自何处。阅读What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With TextHandling Unicode Front To Back In A Web App

+0

我试过ini_set('default_charset','utf-8'),但'''变成'?'。无论如何,我的替代解决方案看起来不错,但如果我不需要'mb_convert_encoding()'包装没有安装'mbstring',会更好。 – 2013-02-14 07:54:47

+0

ini设置本身并没有太大的作用。你的数据是什么编码?如果您无法回答,请再次阅读之前链接的文章。 – deceze 2013-02-14 08:53:47

+0

好的,这些文章看起来不错。我会在稍后阅读。谢谢! – 2013-02-14 09:43:57