Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> оброботка файла через форму, приводит к разрушению кодировки  
:(
    Опции темы
DRUG_ADDICT
  Дата 26.12.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



ОС Windows 7, локаль кириллица cp1251, есть файл имя_которого_написано_по русски.txt идем на сайт в форму, указываем в ней файл

Код
<input type="file" size="60" name="file_txt">


нажимаем кнопку "обработать", далее

Код
    header("Content-Disposition: attachment; filename=".$url);
    header("Content-Type: application/x-force-download; name=\"".$url."; charset=windows-1251\"");


где $url= $_FILES['file_txt']['name'];

и на выходе мы имеем файл имя которого: 

???_????????_??_???????.txt

такое чудо происходит только в Опере, в мазила и IE все нормально, но есть другие сайты с схожей формой и там отнюдь все нормально с этим делом в опере... 

подскажите как решить проблему, перекопал пол инета ума не приложу в чем трабла =((( 

ps. c именем файла скрипт абсолютно не чего не делает, как выше написал получаем имя файла, садим его в переменную, на выходе указываем эту переменную, и все!!! smile 

помогите пожалуйста, спасибо огромное за ранее!!!

Это сообщение отредактировал(а) DRUG_ADDICT - 26.12.2009, 13:38
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
awdev
Дата 26.12.2009, 14:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 22.11.2009

Репутация: 1
Всего: 1



Страница на которой происходит выбор файлов в какой кодировке?

А также сам скрипт, рекомендовал бы перейти полностью на UTF возможно реши проблему.
Что нужно?
 1. Скрипт выбора файла для загрузки сделать в UTF, header("Content-Type:text/html;charset=utf-8");
 2. Сами скрипты (*.php) в УТФ
 3. Charset выдачи так же в UTF


Должно решить проблему.
PM MAIL   Вверх
DRUG_ADDICT
  Дата 26.12.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



Цитата(awdev @ 26.12.2009,  14:31)
Страница на которой происходит выбор файлов в какой кодировке?

А также сам скрипт, рекомендовал бы перейти полностью на UTF возможно реши проблему.
Что нужно?
 1. Скрипт выбора файла для загрузки сделать в UTF, header("Content-Type:text/html;charset=utf-8");
 2. Сами скрипты (*.php) в УТФ
 3. Charset выдачи так же в UTF


Должно решить проблему.

можно ли как то решить эту проблему в cp1251?!

весь сайт подвешен на cp1251, вся БД - с огромным количеством информации - все данные, все поля в cp1251, все страницы
Код
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

как всю БД переконвертировать в UTF8 разом? - если бы знал ответ наверное сделал бы как вы предлагаете, сейчас же это не возможно...

хотя если попробовать один этот файл скрипта сделать на utf хммм... но там в ней есть русские символы, что с ними будет? из них получится же кракозябр конкретный... ммм наверно ваша идея слишком геморная, и софт в этой облости тоже геморный какойто =) 

а чем вы пользуетесь, каким софтом для перекодирования всех скриптов и файлов (с русским текстом в них) - в массовом порядке, штук 150 файлов разом например, подскажите?! и БД если можно узнать тож какой софт юзать или какой способ?

спасибо.

Добавлено через 12 минут и 43 секунды
 smile попробовал щас через Notepad++ переконвертить этот скрипт который обрабатывал файл, все получилось файл скачался в нормальной кодировке... но конечно русский текст на этой странице (в этом скрипте в echo "";) стал выглядеть не человеческим образом...

awdev помогите с софтом пожалуйста smile и цены вам не будет!!!
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
DRUG_ADDICT
  Дата 26.12.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



кстати я когда через Штирлиц перекодирую в UTF у меня скрипт ваще не запускается на серваке... а когда преобразую в UTF - это как через Notepad++ (выше) когда я вижу через блокнот всякие крокозябры а не русский текст, то скрипт нормально запускается и када я локаль в шабке указываю 
Код

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

русский текст видно и файл обрабатывается на ура! вот почему же так с перекодированием получается всё плохо? =(((

ps. ещё заметил когда делаю перекодирование файл в два раза больше вешает чем win в кодировке smile 
pss. в штирлице можно делать только пакетное перекодирование - от чего скрипты, как уже писал, вообще не запускаются!!! =((( а через Notepad++ замучаюсь все файлы преобразовывать...


Это сообщение отредактировал(а) DRUG_ADDICT - 26.12.2009, 15:51
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
DRUG_ADDICT
  Дата 26.12.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



все софтину для пакетного ПРЕОБРАЗОВАНИЯ нашел http://download.cnet.com/Character-Set-Con...4-10542412.html осталось решить проблему с БД smile теперь надо её в UTF-8 перекопать всю О_о!!! тут я вообще без силен, даже боюсь браться за это дело, выручайте народ!
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
DRUG_ADDICT
Дата 26.12.2009, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



ндааа глухо стало когда О СОФТЕ спросили для выполнения этой задачи smile ну это и понятно ибо как я и писал задача эта геморная и геморная она не потому что сложно а потому что софта для таких задач как такого нормального просто нету... уже на linux`e пробую делать ПРЕОБРАЗОВАНИЕ файлов (млять даже iconv man не работает команда smile) и там все это дело не увенчалось успеха... наверно давно бы я уже через Notepad++ все бы файлы в отдельности преобразовал. боже боже какой ужас... 

и так вопрос остается открытым:

можно ли как то решить эту проблему в cp1251?!
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
bars80080
Дата 27.12.2009, 01:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



а что нужно то?

базу сконвертировать? это делается вообще без скриптов http://forum.vingrad.ru/index.php?showtopi...t&p=1998636
если файлы, то бегунок, который будет бегать по ним и переписывать, тоже не так уж сложно сделать. все функции - чтение каталога, чтение файла, iconv для конвертации и запись обратно


или я не так понял?
PM MAIL WWW   Вверх
DRUG_ADDICT
Дата 27.12.2009, 02:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



по поводу *чего вы там?!?!??!* бегунка и катологов smile пожалуйста ну падяльюйстя ну пвсяяя пасяяя пасялюуйстяя!!! smile smile  smile
ну вот как мне рекурсивно пробежаться по всем каталогам и все файлы расширением .php .html преобразовать в UTF8! покажите команду =((( делал так (как на википедии написано) 
Цитата

файлы необходимого типа и рекурсивно (в примере txt файлы):
find . -name '*.txt' | while read i; do iconv -f  WINDOWS-1251 -t UTF-8 "$i" >tmp; mv tmp "$i"; done

- н ч не преобразовалась, та же cp1251 осталась...

БД я уже переконвертил! smile помог это деяние совершить над .sql файлом Notepad++ 
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
bars80080
Дата 27.12.2009, 02:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(bars80080 @  27.12.2009,  00:22 Найти цитируемый пост)
все функции - чтение каталога, чтение файла, iconv для конвертации и запись обратно

opendir, readdir, - чтение каталога
pathinfo - узнать расширение
fopen, fread - чтение файла
iconv - конвертация
fwrite - запись

сам бегунок сейчас не напишу, только если в понедельник раскопаю в своих скриптах на работе
PM MAIL WWW   Вверх
DRUG_ADDICT
Дата 27.12.2009, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



за ссылку СПАСИБО ОГРОМНОЕ! поставил бы + ноооо вот уже как с 2007 зареган тут, всё не магу 100 постов набрать! эххх не судьба значит smile 
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
bars80080
Дата 28.12.2009, 18:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



так, чуть не забыл, бегунки

по файлам:

Код

$dir = 'oldcatalog/';
$new = 'newcatalog/';
$code1 = 'cp1251'; 
$code2 = 'utf-8';
$types = array('php','html','htm','css','js','txt','htc','tpl');
$f = get_dir($dir, $new);

function get_dir($dir, $new) {
    global $types;
    //$mv_num = array();
    if(file_exists($dir)) {
        $opdir = opendir($dir); $i = 0;
        if(!empty($opdir)) { while($f = readdir($opdir)) { 
                if($f == '.' or $f == '..') continue;
                $path = $dir.$f; $nath = $new.$f;
                if(is_dir($path)) {
                    if(!file_exists($nath)) { mkdir($nath.'/', 0777); }
                    s($nath);
                    $m = get_dir($path.'/', $nath.'/');
                    continue;
                }
                $info = pathinfo($path);
                if(isset($info['extension']) && in_array($info['extension'], $types)) {
                    $size = filesize($path) + 1000;
                    $r = file_oper($path, 'r', $size, false);
                    $w = iconv('cp1251', 'utf-8', $r);
                    $r = file_oper($nath, 'w', $w);
                    s($nath, 2);
                    continue;
                }
                copy($path, $nath);
                s($nath, 1);
                $i++; }}}
    return true;
}
function s($t, $s = 0) {
    switch($s) {
        case 0: $s = 'dir: '; break;
        case 1: $s = 'fil: '; break;
        case 2: $s = 'con: '; break;
        default: break;
    }
    echo $s.$t.'<br />';
}
function file_oper($path, $mode, $str = '', $file = true) {
    if(($mode == 'r' || $mode == 'ra') && $file && !file_exists($path)) return false;
    if($mode == 'ra') $m1 = 'r'; else $m1 = $mode;
    $fp = fopen($path, $m1); $i = 0;
    if($fp) {
        if($mode == 'r') {
            if(empty($str)) { $str = 4096; }
            $r = fread($fp, $str); }
        elseif($mode == 'ra') {
            if(empty($str)) { $str = 4096; }
            while(!feof($fp)) {
                $r[$i] = fgets($fp, $str); $i++; }}
        elseif($mode == 'w' || $mode == 'a') {
            $r = fwrite($fp, $str); }
        fclose($fp);
        if(!isset($r)) return false;
        return $r; }
    return false; }

по базе, там по ссылке уже нашёл, как я понял

Это сообщение отредактировал(а) bars80080 - 28.12.2009, 18:41
PM MAIL WWW   Вверх
DRUG_ADDICT
Дата 29.12.2009, 06:29 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



bars80080, о госпади =) ладно будем иметь введу этот скрипт, спасибо!

Это сообщение отредактировал(а) DRUG_ADDICT - 29.12.2009, 06:30
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
DRUG_ADDICT
  Дата 6.1.2010, 03:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 10.8.2007

Репутация: нет
Всего: нет



 smile преобразовал все файл (использовал iconv) перекодил базу (использовал нотепад++), все отлично работает! ну правда ajax что то как то... ну о нём чуть позже smile 

сейчас более приоритетная задача smile исправить поиск, а он что то после всего этого, как то странно работает, а если быть точнее то он стал РЕГИСТРОЗАВИСИМ по отношению к русским символам, которые я ввожу в форму... файл этой формы в UTF-8 и content="text/html; charset=utf-8" вообщем все в UTF-8 по этому счету волноваться не стоит. так что $_GET['search'] передает UTF-8.

предварительно, собсно как всегда перед вопросом я посещаю google.ru smile так что:

причина нашлась, она кроется в функции PHP strtolower();
в общем легче описать всё это на примере:
Код
<?php

setlocale(LC_ALL, 'ru_RU.UTF-8');
echo strtolower("РЕГистр");

?>

<= файл в UTF-8. неправда ли, результат этой функции выглядит удивительно?

и так, модуль php: iconv - есть; mbstring - нету, возможности установить - нету.

вопрос такой, как это исправить?!
--------------------
ICQ# 23-23-30 What can i do for you ? Paid..."Свобода лечит лучше всего" А.С. Неил. Самерхилт.
PM ICQ Jabber   Вверх
Simpliest
Дата 6.1.2010, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



для начала сделать 
Код

var_dump(setlocale(LC_ALL, 'ru_RU.UTF-8'));

и убедится что она у тебя не установилась


--------------------
user posted image
PM   Вверх
skyboy
Дата 6.1.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260




M
skyboy
Один топик — один вопрос!

Пожалуйста, ознакомьтесь с правилами форума.


PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0674 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.