ldap_explode_dn的奇怪编码结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ldap_explode_dn的奇怪编码结果相关的知识,希望对你有一定的参考价值。

ldap_explode_dn转换DN字符串后,一些字符(在我的情况下是西里尔字母)被转换为我无法识别的其他编码。

例如ldap_explode_dn('cn=tt,ou=groups,o=ц1,ou=realms,dc=uvf,dc=local', 0);返回

Array
(
    [0] => tt
    [1] => groups
    [2] => D1861
    [3] => realms
    [4] => uvf
    [5] => local
)

如你所见,ц角色被转换为D186。我想这是两字节的UTF-8,但我无法理解我如何解码它。

我尝试了许多方法,如iconvmb_convert_encoding,但没有成功。

我的问题是 - 这个编码是什么以及如何在php中使用它?

答案

我发现this user note on php.net为您的问题提供了解决方案。


编辑:从PHP 5.5开始,对于preg_replace不推荐使用修饰符e,所以这里是一个基于链接用户注释的preg_replace_callback解决方案:

function myldap_explode_dn( $dn, $with_attrib ) {
    $result = ldap_explode_dn( $dn, $with_attrib );

    //translate hex code into ascii again
    foreach ( $result as $key => $value ) {
        $result[ $key ] = preg_replace_callback(
            "/\([0-9A-Fa-f]{2})/",
            function ( $matches) {
                return chr( hexdec( $matches[1] ) );
            },
            $value
        );
    }

    return ( $result );
}

以上是关于ldap_explode_dn的奇怪编码结果的主要内容,如果未能解决你的问题,请参考以下文章

音视频入门——H.264编码(宏块+片+帧)浅析

JavaCV升级1.5.6之后遇到h265/hevc编码的视频无法打开编解码器avcodec_open2() error -1:Could not open video codec异常解决办法(代码片

记一个奇怪的编码转换问题,及探讨“错误: 编码GBK的不可映射字符” 的原因

web开发的一些心得

CoInitializeSecurity() 和媒体基础编码器之间的奇怪连接

码片速率的含义