Php OpenLDAP输出一些奇怪的数据,json#u encode()可以';t形手柄
我把它添加到piwik中,虽然它在其他机器上运行得很好,没有任何问题,但在我的debian机器上却没有 与LDAP服务器的连接正常,但只要我尝试通过LDAP用户登录,就会出现以下错误: 警告:json_encode():第44行/var/www/plugins/LoginLdap/GigatecLdap.php中的参数中的UTF-8序列无效 我在第43行的$result上做了一个var_dump(),看到OpenLDAP似乎从AD返回了一些奇怪的字符,而json_encode无法处理这些字符Php OpenLDAP输出一些奇怪的数据,json#u encode()可以';t形手柄,php,json,openldap,matomo,Php,Json,Openldap,Matomo,我把它添加到piwik中,虽然它在其他机器上运行得很好,没有任何问题,但在我的debian机器上却没有 与LDAP服务器的连接正常,但只要我尝试通过LDAP用户登录,就会出现以下错误: 警告:json_encode():第44行/var/www/plugins/LoginLdap/GigatecLdap.php中的参数中的UTF-8序列无效 我在第43行的$result上做了一个var_dump(),看到OpenLDAP似乎从AD返回了一些奇怪的字符,而json_encode无法处理这些字符 您
您可以查看源代码您需要了解LDAP服务器上存储的条目的字符集。你可能会有一些运气用这个。希望这将返回字符集的名称,在这种情况下,您可以执行以下操作:
$utf8String = iconv(mb_detect_encoding($string), 'utf8', $string);
$bytes = unpack('H*', $string);
如果mb\u detect\u encoding
返回false
,即编码未知,您可以自己动手解决(繁琐但有益)。查找包含导致问题的已知字符的字符串。用以下公式计算字符串的字节表示形式:
$utf8String = iconv(mb_detect_encoding($string), 'utf8', $string);
$bytes = unpack('H*', $string);
然后在上查找您的字符,并查看该字符的字符集/代码页支持,将字节与上面相应的字节进行匹配。然后,您应该能够使用该字符集名称作为iconv
的第一个参数