我正在尝试将数组编码为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);
答案 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));