ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #12281  
Старый 12.09.2009, 13:27
Аватар для Gray_Wolf
Gray_Wolf
Постоянный
Регистрация: 07.03.2009
Сообщений: 357
Провел на форуме:
1284900

Репутация: 399
По умолчанию

Цитата:
Сообщение от KaMiKadZe  
вот такую бредятину:
RњRµR¶RґSѓ_RЅRµR±RѕRј_Ryo_R·RµRјR»R R№
Прогнал эту строку через кучу всевозможных кодировок, и результат отрицательный.
Так что скорее всего проблема где-то в коде...
Попробуйте испытать это дела на файлах:
а.jpg
б.jpg
я.jpg
(можно и без расширения) И посмотрите на HEX коды...
 
Ответить с цитированием

  #12282  
Старый 12.09.2009, 13:34
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме:
2735257

Репутация: 103
По умолчанию

UTF-8 пробовал сразу же как заметил проблему не помогло.
Сейчас остальное попробовал, только некоторые символы поменялись
например KOI8_R выдал R‘S‹R»Rѕ_Ryo_RїSЂRѕS?R»Rѕ
Цитата:
Сообщение от Gray_Wolf  
Прогнал эту строку через кучу всевозможных кодировок, и результат отрицательный.
Так что скорее всего проблема где-то в коде...
Попробуйте испытать это дела на файлах:
а.jpg
б.jpg
я.jpg
(можно и без расширения) И посмотрите на HEX коды...
a.mp3 - ./files/R°.mp3
я.mp3 - ./files/SЏ.mp3
В коде нет проблем, до этого стоял обычный загрузчик и обрабатывал как русские так и англ названия на ура, так же из mp3 берутся id тэги и с ними все отлично, так же если переименовать файл то он воспроизводится через flash player следовательно файл не бьется!
UPDATE:
Опа решил проблему, только я в шоке =)
PHP код:
$_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']); 
Не работало!

PHP код:
$_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']);
$_FILES['Filedata']['name'] = iconv('WINDOWS-1251''UTF-8'$_FILES['Filedata']['name']);
$_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']); 
Заработало
Не понимаю логики

Последний раз редактировалось KaMiKadZe; 12.09.2009 в 13:46..
 
Ответить с цитированием

  #12283  
Старый 12.09.2009, 13:50
Аватар для FireFenix
FireFenix
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме:
3178262

Репутация: 389
По умолчанию

Цитата:
Сообщение от KaMiKadZe  
UTF-8 пробовал сразу же как заметил проблему не помогло.
Сейчас остальное попробовал, только некоторые символы поменялись
например KOI8_R выдал R‘S‹R»Rѕ_Ryo_RїSЂRѕS?R»Rѕ

a.mp3 - ./files/R°.mp3
я.mp3 - ./files/SЏ.mp3
В коде нет проблем, до этого стоял обычный загрузчик и обрабатывал как русские так и англ названия на ура, так же из mp3 берутся id тэги и с ними все отлично, так же если переименовать файл то он воспроизводится через flash player следовательно файл не бьется!
UPDATE:
Опа решил проблему, только я в шоке =)
PHP код:
$_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']); 
Не работало!

PHP код:
$_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']);
$_FILES['Filedata']['name'] = iconv('WINDOWS-1251''UTF-8'$_FILES['Filedata']['name']);
$_FILES['Filedata']['name'] = iconv('UTF-8''WINDOWS-1251'$_FILES['Filedata']['name']); 
Заработало
Не понимаю логики
Ты может принятое декодировал.... а вывод на страницу в cp1251? может оно обратно в утф перевело
 
Ответить с цитированием

  #12284  
Старый 12.09.2009, 13:54
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме:
2735257

Репутация: 103
По умолчанию

Да и я уже как неделю усвоил перед тем как работать с данными принятыми по ajax нужно их сразу же переводить в windows-1251, иначе после работы с ними уже не переведешь и будут каракули навсегда.
На страницу ничего не выводится, сразу в базу идет, а база cp1251_general_ci да и названия файлов перед тем как идти в базу транслируются (Было-стало в Bilo-stalo)и удаляются пробел,&,'," и прочие знаки которые могут помешать отдать файл через браузер.
 
Ответить с цитированием

  #12285  
Старый 12.09.2009, 15:17
Аватар для Architek86
Architek86
Познающий
Регистрация: 20.02.2008
Сообщений: 82
Провел на форуме:
107625

Репутация: 2
По умолчанию

Народ, вопрос наверное не из простых..
дан текстовой файл (юникс утф8)
Цитата:
1|текст1|текст2|текст3
2|текст1|текст2
\
текст3
\
текст4|текст5
3|текст1|текст2|текст3
суть вот в чём: надо каждую строчку этого файла занести в массив. Думал юзать file(), да есть тут одна особенность: обратите внимание на символ '\' в коде, а вернее на комбинацию 'перевод строки' + '\' + перевод строки, так вот, надо эту комбинацию учитывать как просто символ в контенте "текст1" или "текст2" и т.п. и не использовать их как команду для разбивки текста в массивы... .т.е. в итоге, как видно, у нас должно быть три значение в массиве:
Цитата:
1|текст1|текст2|текст3
Цитата:
2|текст1|текст2
\
текст3
\
текст4|текст5
Цитата:
3|текст1|текст2|текст3
Надеюсь, понятно обьяснил)) Или всё придётся preg_replace'ом заменить их сначала на что-то отличное от перевода строки, а уж потом юзать file()???
 
Ответить с цитированием

  #12286  
Старый 12.09.2009, 15:30
Аватар для Architek86
Architek86
Познающий
Регистрация: 20.02.2008
Сообщений: 82
Провел на форуме:
107625

Репутация: 2
По умолчанию

ааа, всё, нашёл preg_split))))))
 
Ответить с цитированием

  #12287  
Старый 12.09.2009, 15:37
Аватар для mailbrush
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

PHP код:
<?php

     $file 
'file.txt';
     
$file file($file);

     
$i 1;

     foreach (
$file as $line)
     {
         if (
substr($line01) == $i)
         {
             
$array[] = $line;
             
$i++;
         }
         else
         {
             
$array[count($array) - 1] .= $line;
         }
     }
     
print_r($array);

?>
Без использования регулярок
Выведет:

Код:
Array
(
    [0] => 1|текст1|текст2|текст3

    [1] => 2|текст1|текст2
\
текст3
\
текст4|текст5

    [2] => 3|текст1|текст2|текст3
)
 
Ответить с цитированием

  #12288  
Старый 12.09.2009, 18:27
Аватар для RedBull@12
RedBull@12
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме:
482261

Репутация: 58
По умолчанию

Цитата:
Сообщение от FireFenix  
PHP код:
$name iconv('UTF-8''WINDOWS-1251'$_FILE);
$name iconv('KOI8_R''WINDOWS-1251'$_FILE);
$name iconv('KOI8_U''WINDOWS-1251'$_FILE); 
имею мнение, что данный код сработает ТОЛЬКО в одном случае, что собственно и было видно следующих постах.
только при
PHP код:
$name iconv('KOI8_U''WINDOWS-1251'$_FILE); 
т.к. иконв возвращает только в одном случае если входящая кодировка указана верно. поэтому выше представленный код НЕ верен. и имеет место быть только в таком виде:
PHP код:
$name['UTF'] = iconv('UTF-8''WINDOWS-1251'$_FILE);
$name['KOI8R'] = iconv('KOI8_R''WINDOWS-1251'$_FILE);
$name['KOI8U'] = iconv('KOI8_U''WINDOWS-1251'$_FILE); 
и после удалить все элементы массива которые пусты.
останется только ОДИН элемент массива в ключе которого будет кодировка текста
 
Ответить с цитированием

  #12289  
Старый 12.09.2009, 18:45
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме:
2735257

Репутация: 103
По умолчанию

RedBull@12,
Эм...Вообще-то тот код был наводкой =)
Поменять имя переменной куда ложим результат дело пары секунд, да и зачем делать ложить в массив, а потом еще удалять пустые элементы когда достаточно просто проверить все варианты и найти рабочий ?
 
Ответить с цитированием

  #12290  
Старый 12.09.2009, 18:56
Аватар для RedBull@12
RedBull@12
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме:
482261

Репутация: 58
По умолчанию

Цитата:
Сообщение от KaMiKadZe  
RedBull@12,
Эм...Вообще-то тот код был наводкой =)
Поменять имя переменной куда ложим результат дело пары секунд, да и зачем делать ложить в массив, а потом еще удалять пустые элементы когда достаточно просто проверить все варианты и найти рабочий ?
код представленный принципиально не верный, ибо он верен только в одном случае.
а на сколько "дешевле" проверить все варианты допустим если будет гораздо больше. а во-вторых зачем проверять чем-то когда 2 функции вернут нужный результат. и я сказал именно об особенности функции iconv. о то что если входящая кодировка указана не верно то вернет пустой результат, и исправил приведенный код, а не показал как правильно проверять кодировку.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ