1

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

1 回答 1

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));
于 2013-09-19T02:44:56.950 回答