Json编码mcrypt_create_iv salt错误

时间:2013-09-19 02:39:02

标签: php json

我正在尝试将数组编码为JSON格式,该数组包含一个哈希密码和一个盐,但由于某种原因,数组不会被编码,我相信它与盐中的字符有关,是无论如何我或者我不能JSON编码包含这些字符的东西?

$options = [ 
            'cost' => 12,
            'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
           ];

$salt = $options['salt'];
$arr = array('password' => 1, 'salt' => $salt);
echo json_encode($arr);

1 个答案:

答案 0 :(得分:0)

那是因为你的二进制字符串里面有(非预期的)无效的UTF-8;为了使其有效,您可以使用utf8_encode()编码字符串:

$arr = array('password' => 1, 'salt' => utf8_encode($salt));

稍后您将不得不反向执行操作:

$options = json_decode('...', true);
$salt = utf8_decode($options['salt']);

如果您对这种二元化处理感到不舒服,您还可以执行base64_encode()之类的文本编码,以后可以使用base64_decode()进行解码:

$arr = array('password' => 1, 'salt' => base64_encode($salt));