Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php OpenLDAP输出一些奇怪的数据,json#u encode()可以';t形手柄_Php_Json_Openldap_Matomo - Fatal编程技术网

Php OpenLDAP输出一些奇怪的数据,json#u encode()可以';t形手柄

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无法处理这些字符 您

我把它添加到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
的第一个参数