2012-10-04 47 views
1

我加入這個LoginLdap plugin到piwik,雖然這是完全在其他機器上沒有任何問題運行,在我的Debian框沒有。OpenLDAP的輸出一些奇怪的數據json_encode()不能處理

到LDAP服務器的工作方式的連接,但只要我嘗試通過LDAP用戶登錄我的錯誤:

Warning: json_encode(): Invalid UTF-8 sequence in argument in /var/www/plugins/LoginLdap/GigatecLdap.php on line 44

我做了$結果的var_dump()在第43行和鋸這OpenLDAP的似乎從AD返回一些奇怪的字符,該json_encode無法處理。

你可以看到源here.

回答

2

你需要找出哪些字符集條目存儲在LDAP服務器上。您可能需要使用mb_detect_encoding這一些運氣。希望這將返回字符集的名稱,在這種情況下,你可以做到以下幾點:

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

在這種情況下該mb_detect_encoding回報false - 在工作吧,你可以一展身手 - 即編碼是未知你自己(乏味,但有回報)。查找包含導致問題的已知字符的字符串。制定出字符串的字節表示有以下幾點:

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

再看看你的性格上FileFormat,並期待在該字符的字符集/代碼頁支持,匹配了從上面的相應字節的字節數。然後,您應該能夠使用的字符集的名稱爲iconv第一個參數。