Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: getid3 - запись в строки содержащей рус+eng символы в id3v1
 
 автор: Dr Lines   (02.02.2009 в 16:08)   письмо автору
 
 

Приветствую.

Проблема заключается в следующем:
При записи в тег id3v1 строк, содержащих русские и английские символы сразу, русские символы удаляются из строки и сохраняются только английские.

Например при записи, скажем в поле title строки 'song экстрим'
слово 'экстрим' стирается и записывается только 'song '.
Причем если пытаться записать в поле title просто строку 'экстрим', то оно запишется без проблем и никуда не удалится.

Пробовал заранее переводить строку, 'song экстрим' в формат UTF-8,
iconv('cp1251', 'UTF-8', 'song экстрим'); - таким образом
и не помогает.

Вобщем уже все перепробовал.
Модуль записи тегов почему-то не может записывать сразу русские и английские теги в id3v1.
Хочу заметить, что такая проблема только с тегами id3v1.
В id3v2 они абсолютно нормально записываются в формате UTF-8. (после iconv)

Вот один из вариантов записи которым я пользовался (который почемуто записывает в id3v1 только русские, либо только английские символы).


 $TaggingFormat = 'cp1251';

 require('../../get_file_info/getid3/getid3.php');
 $getID3 = new getID3;

 require('../../get_file_info/getid3/write.php');
 $tagwriter = new getid3_writetags;
 $tagwriter->filename = $file_path;
 

 $tagwriter->tagformats = array('id3v1');
 $tagwriter->overwrite_tags = true;
 $tagwriter->tag_encoding = 'cp1251';
 $tagwriter->remove_other_tags = false;

 $TagData['artist'][] = $arist_id3v1;
 $TagData['title'][] = $caption_id3v1;
 $TagData['comment'][] = $comment_idv3v1;

 $tagwriter->tag_data = $TagData;
 $tagwriter->WriteTags();


Помогите справиться с этой проблемой!

<?P.S.
Используется -> getid3-1.7.8b2

Да кстати, заметил что в теги id3v1 строки с русскими символами, даже содержащие английские, нужно записывать в кодировке cp1251. Что насчет id3v2, то тут сойдет UTF-8. Это мое личное наблюдение. - Смотрел в какой кодировке сохраняют id3v1 другие популярные системные редакторы тегов. Если я не прав, то подробно и грамотно объясните свою точку зрения.?>

  Ответить  
 
 автор: Dr Lines   (02.02.2009 в 16:46)   письмо автору
 
   для: Dr Lines   (02.02.2009 в 16:08)
 

Чтож, ответа так и недождался, но зато наконец решил проблему!

Вот один из вариантов решения, может быть не самый лучший но работает.
берется файл write.php
в нем ищется строка:

        $tag_data_id3v1['title']   = getid3_lib::iconv_fallback($this->tag_encoding, 'ISO-8859-1', @implode' ', @$this->tag_data['TITLE']));


<?У меня это где-то в раене 470, и там переправляется ISO-8859-1 на cp1251?>
В остальных близлежащих делается то же самое.

И потом говорится ура.. :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования