Получить теги ID3 с японскими символами - PHP

Поэтому я столкнулся с проблемой: каждый раз, когда я загружаю mp3-файл и получаю его теги id3, такие как, например, название, исполнитель и т. Д., И он находится в японском символьном формате, он будет сохраняться в базе данных или обрабатываться php как набор. букв и специальных символов. база данных уже настроена на прием японских символов. Но я не знаю, почему каждый раз, когда обрабатываются теги id3, кодировка будет такой. вот мой код

 public function getTagsInfo($sFilepath) {
    $aTV23 = array( // array of possible sys tags (for last version of ID3)
        'TIT2',
        'TALB',
        'TPE1',
        'TPE2',
        'TRCK',
        'TYER',
        'TLEN',
        'USLT',
        'TPOS',
        'TCON',
        'TENC',
        'TCOP',
        'TPUB',
        'TOPE',
        'WXXX',
        'COMM',
        'TCOM'
    );
    $aTV23t = array( // array of titles for sys tags
        'Title',
        'Album',
        'Author',
        'AlbumAuthor',
        'Track',
        'Year',
        'Lenght',
        'Lyric',
        'Desc',
        'Genre',
        'Encoded',
        'Copyright',
        'Publisher',
        'OriginalArtist',
        'URL',
        'Comments',
        'Composer'
    );
    $aTV22 = array( // array of possible sys tags (for old version of ID3)
        'TT2',
        'TAL',
        'TP1',
        'TRK',
        'TYE',
        'TLE',
        'ULT'
    );
    $aTV22t = array( // array of titles for sys tags
        'Title',
        'Album',
        'Author',
        'Track',
        'Year',
        'Lenght',
        'Lyric'
    );

   $aTV23 = mb_convert_encoding($aTV23, "UTF-8");
   $aTV23t = mb_convert_encoding($aTV23t, "UTF-8");
   $aTV22 = mb_convert_encoding($aTV22, "UTF-8");
   $aTV22t = mb_convert_encoding($aTV22t, "UTF-8");
    // read source file
    $iFSize = filesize($sFilepath);
    $vFD = fopen($sFilepath,'r');
    $sSrc = fread($vFD,$iFSize);
    fclose($vFD);
    // obtain base info
    if (substr($sSrc,0,3) == 'ID3') {
        $aInfo['FileName'] = $sFilepath;
        $aInfo['Version'] = hexdec(bin2hex(substr($sSrc,3,1))).'.'.hexdec(bin2hex(substr($sSrc,4,1)));
    }
    // passing through possible tags of idv2 (v3 and v4)
    if ($aInfo['Version'] == '4.0' || $aInfo['Version'] == '3.0') {
        for ($i = 0; $i < count($aTV23); $i++) {
            if (strpos($sSrc, $aTV23[$i].chr(0)) != FALSE) {
                $s = '';
                $iPos = strpos($sSrc, $aTV23[$i].chr(0));
                $iLen = hexdec(bin2hex(substr($sSrc,($iPos + 5),3)));
                $data = substr($sSrc, $iPos, 10 + $iLen);
                for ($a = 0; $a < strlen($data); $a++) {
                    $char = substr($data, $a, 1);
                    if ($char >= ' ' && $char <= '~')
                        $s .= $char;
                }
                if (substr($s, 0, 4) == $aTV23[$i]) {
                    $iSL = 4;
                    if ($aTV23[$i] == 'USLT') {
                        $iSL = 7;
                    } elseif ($aTV23[$i] == 'TALB') {
                        $iSL = 5;
                    } elseif ($aTV23[$i] == 'TENC') {
                        $iSL = 6;
                    }
                    $aInfo[$aTV23t[$i]] = substr($s, $iSL);
                }
            }
        }
    }
    // passing through possible tags of idv2 (v2)
    if($aInfo['Version'] == '2.0') {
        for ($i = 0; $i < count($aTV22); $i++) {
            if (strpos($sSrc, $aTV22[$i].chr(0)) != FALSE) {
                $s = '';
                $iPos = strpos($sSrc, $aTV22[$i].chr(0));
                $iLen = hexdec(bin2hex(substr($sSrc,($iPos + 3),3)));
                $data = substr($sSrc, $iPos, 6 + $iLen);
                for ($a = 0; $a < strlen($data); $a++) {
                    $char = substr($data, $a, 1);
                    if ($char >= ' ' && $char <= '~')
                        $s .= $char;
                }
                if (substr($s, 0, 3) == $aTV22[$i]) {
                    $iSL = 3;
                    if ($aTV22[$i] == 'ULT') {
                        $iSL = 6;
                    }
                    $aInfo[$aTV22t[$i]] = substr($s, $iSL);
                }
            }
        }
    }
    return $aInfo;
}

Результат:

あなたを武装解除する converted automatically to B0j0_00fkdY00

0 ответов

Другие вопросы по тегам