1

我将这个LoginLdap 插件添加到 piwik,虽然它在其他机器上运行良好,没有任何问题,但在我的 debian 机器上却没有。

与 LDAP 服务器的连接有效,但是一旦我尝试通过 LDAP 用户登录,我就会收到错误消息:

警告:json_encode():第 44 行 /var/www/plugins/LoginLdap/GigatecLdap.php 中的参数中的 UTF-8 序列无效

我在第 43 行的 $result 上做了一个 var_dump() ,发现 OpenLDAP 似乎从 AD 返回了一些奇怪的字符,而 json_encode 就是无法处理。

您可以在此处查看来源。

4

1 回答 1

2

您需要找出条目存储在 LDAP 服务器上的字符集。你可能有一些运气使用mb_detect_encoding这个。希望这将返回字符集的名称,在这种情况下,您可以执行以下操作:

$utf8String = iconv(mb_detect_encoding($string), 'utf8', $string);

mb_detect_encoding返回的情况下false——即编码未知——你可以自己去解决它(乏味,但有回报)。查找包含导致问题的已知字符的字符串。使用以下方法计算字符串的字节表示:

$bytes = unpack('H*', $string);

然后在FileFormat上查找您的字符并查看该字符的字符集/代码页支持,将字节与上面的相应字节匹配。然后,您应该能够使用该字符集名称作为iconv.

于 2012-10-04T12:12:05.130 回答