如果将json_encode应用于输出,则不会显示异常消息

时间:2011-10-20 13:40:41

标签: php exception exception-handling json

以下是代码:

try{
//The exception is thrown.
throw new Exception('Parâmetros de consulta inválidos');

// and in the catch block it's caught successfully:
}catch(Exception $e){
    echo $e->getMessage(); //This prints the message correctly.

    $output = json_encode(array('msg'=>$e->getMessage()));
    echo $output; //But this fails...displays {"msg":null}

}

这里有什么问题?

2 个答案:

答案 0 :(得分:1)

问题在于角色â和á。事实上,如果你用简单的a替换它们,你就会得到正确的信息。

替换此行:

array('msg'=>$e->getMessage())

用这个:

array('msg'=>utf8_encode($e->getMessage()))

您必须执行此更改,因为json_encode适用于ut8,因为您可以阅读here

答案 1 :(得分:1)

如果使用PHP版本> = 5.4.0,则应使用JSON_UNESCAPED_UNICODE标志调用json_encode函数。 http://php.net/manual/en/function.json-encode.php