Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите разобраться  (Прочитано 27075 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« : 07-03-2013 02:42 » 

Собственно, здравствуйте. Не буду излишне флудить, сразу изложу свою проблему. Собственно, есть код на яваскрипте, определенным образом пакующий строку...
Код: (Javascript)
function pack(a, b) {
    V = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
    var c = "",
        d = "",
        e, f, g, h, k, p = 0;
    b &= 255;
    for (f = 0; f < a.length; d += String.fromCharCode(b ^ a.charCodeAt(f)), f++);
    for (a = d; p < a.length;) e = a.charCodeAt(p++), d = a.charCodeAt(p++), f = a.charCodeAt(p++), g = e >> 2, e = (e & 3) << 4 | d >> 4, h = (d & 15) << 2 | f >> 6, k = f & 63, isNaN(d) ? h = k = 64 : isNaN(f) && (k = 64), c = c + V.charAt(g) + V.charAt(e) + V.charAt(h) + V.charAt(k);
    return c
};
И, попытка реализовать подобное на Perl
Код: (Perl)
#!/usr/bin/perl

$a = '' # тут строка;

$b = '' # тут число, от которого мы пляшем;

$V = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";

$c, $d;

$e, $f, $g, $h, $k, $p = 0;

$b &= 255;

for ($f = 0; $f < length $a; $d .= chr($b ^ ord(substr($a, $f))), $f++){}

for ($a = $d; $p < length $a;) {

$e = ord(substr($a, $p++));

$d = ord(substr($a, $p++));

$f = ord(substr($a, $p++));

$g = $e >> 2;

$e = ($e & 3) << 4 | $d >> 4;

$h = ($d & 15) << 2 | $f >> 6;

$k = $f & 63;

if ($d != $d) {

$h = $k = 64

} elsif ($f != $f) {

$k = 64}

$c = $c.substr($V, $q, 1).substr($V, $e, 1).substr($V, $h, 1).substr($V, $k, 1)}

print $c;

Ткните носом, где косяк??? Подозреваю, что из за особенности работы perl с utf8. Правильно ли реализовала функцию isnan яваскрипта? Беда в том, что результаты кодирования для некоторых строк на яваскрипте и perl заметно отличаются. Собственно, пожалуйста помогите.  Жаль
« Последнее редактирование: 08-03-2013 14:24 от McZim » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 07-03-2013 05:41 » 

vika, у меня два предложения для улучшения темы и ускорения решения твоей задачи:
1. Отформатировать код для повышения читаемости.
2. Указать в [code] язык для включения подсветки. [code=javascript] и [code=perl] соответственно.

Заметь, о безобразиях синтаксиса еще не ни слова. Ага
« Последнее редактирование: 08-03-2013 14:25 от McZim » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 07-03-2013 08:44 » 

Код: (Javascript)
function pack(a, b) {
    V = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
    var c = "",
        d = "",
        e, f, g, h, k, p = 0;
    b &= 255;
    for (f = 0; f < a.length; d += String.fromCharCode(b ^ a.charCodeAt(f)), f++);
    for (a = d; p < a.length;) e = a.charCodeAt(p++), d = a.charCodeAt(p++), f = a.charCodeAt(p++), g = e >> 2, e = (e & 3) << 4 | d >> 4, h = (d & 15) << 2 | f >> 6, k = f & 63, isNaN(d) ? h = k = 64 : isNaN(f) && (k = 64), c = c + V.charAt(g) + V.charAt(e) + V.charAt(h) + V.charAt(k);
    return c
};
Да за такой код нужно убивать
С одной стороны - он рабочий а с другой не читаем для сопровождения и не оптимален по времени выполнения, зато, с другой стороны, оптимален количестом символов - потому что пропущен через обфускатор

Код: (Javascript)
var a_lenght = a.length; //эта переменная нам еще понадобится
for (f = 0; f < a_length; f++) {
     d += String.fromCharCode(b ^ a.charCodeAt(f));
}
for (a = d; p < a_length;) {
        e = a.charCodeAt(p++);
        d = a.charCodeAt(p++);
        f = a.charCodeAt(p++);
        g = e >> 2;
        e = (e & 3) << 4 | d >> 4;
        h = (d & 15) << 2 | f >> 6;
        k = f & 63;
        isNaN(d) ?      h = k = 64      : isNaN(f) && (k = 64);
        c = c + V.charAt(g) + V.charAt(e) + V.charAt(h) + V.charAt(k);
}
А теперь такой код проще перевести на любой язык

Добавлено через 7 минут и 13 секунд:
Что из себя представляет isNaN?

> особенности работы perl с utf8
Что за осбенности?
« Последнее редактирование: 07-03-2013 08:51 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 07-03-2013 09:13 » 

Да за такой код нужно убивать

Слав, это чужой код. Посмотри темы:
https://forum.shelek.ru/index.php/topic,29049.0.html
https://forum.shelek.ru/index.php/topic,29100.0.html

Добавлено через 10 минут и 22 секунды:
> особенности работы perl с utf8
Что за осбенности?

Особенность в том, что Perl изначально (зависит от опций сборки) работает с UTF-8: внутреннее преставление строк, константы в исходниках, потоки ввода-вывода. Кодировку потоков можно установить при открытии файла (man perlfunc), либо использовать Encode. Кодировку констант динамически определяет «use utf8|bytes».

А теперь такой код проще перевести на любой язык

Слав, я от нее хотел этого добиться. Чужими мозгами думать не научишь.
« Последнее редактирование: 07-03-2013 09:27 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 07-03-2013 09:54 » 

Цитата
Слав, я от нее хотел этого добиться. Чужими мозгами думать не научишь.
Я понимаю, понимает ли она, что я понимаю, что понимает она.

Показал для того, что если нужно разобраться в чужом коде -
отформатируй его под себя, для удобства чтения.

так как в per может чуть выше viki Улыбаюсь
но я читаю документацию (иногда)
    ord EXPR
    Returns the numeric value of the first character of EXPR. If EXPR is an empty string, returns 0. If EXPR is omitted, uses $_ . (Note character, not byte.)

и там получаю ссылочку на http://perldoc.perl.org/perlunicode.html
И что я там вижу?

Цитата
use utf8 still needed to enable UTF-8/UTF-EBCDIC in scripts
И там еще есть...

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 07-03-2013 10:24 » 

и там получаю ссылочку на http://perldoc.perl.org/perlunicode.html
И что я там вижу?

Цитата
use utf8 still needed to enable UTF-8/UTF-EBCDIC in scripts
И там еще есть...

Особенность в том, что Perl изначально (зависит от опций сборки) работает с UTF-8: внутреннее преставление строк, константы в исходниках, потоки ввода-вывода. Кодировку потоков можно установить при открытии файла (man perlfunc), либо использовать Encode. Кодировку констант динамически определяет «use utf8|bytes».

Но для надежности и переносимости, при наличии не-ASCII констант use utf8 надо определять всегда. Тоже самое относится к синтаксису и я Вике в прошлый раз это объяснял.

vika, мы ждем твоей реакции.
« Последнее редактирование: 08-03-2013 07:16 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #6 : 07-03-2013 21:20 » 

Код: (Perl)
  1. sub decode ($$)
  2. {
  3.     ($a, $b) = @_;
  4.     $V = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
  5.     $c, $d;
  6.     $e, $f, $g, $h, $k, $p = 0;
  7.     $b &= 255;
  8.  
  9.     for ($f = 0; $f < length $a; $f++)
  10.     {
  11.         $d .= chr($b ^ ord(substr($a, $f)))
  12.     }
  13.  
  14.     for ($a = $d; $p < length $a;)
  15.     {
  16.         $e = ord(substr($a, $p++));
  17.         $d = ord(substr($a, $p++));
  18.         $f = ord(substr($a, $p++));
  19.         $g = $e >> 2;
  20.         $e = ($e & 3) << 4 | $d >> 4;
  21.         $h = ($d & 15) << 2 | $f >> 6;
  22.         $k = $f & 63;
  23.  
  24.         if ($d != $d)
  25.         {
  26.             $h = $k = 64
  27.         }
  28.         elsif ($f != $f)
  29.         {
  30.             $k = 64
  31.         }
  32.  
  33.         $c = $c . substr($V, $q, 1) . substr($V, $e, 1) . substr($V, $h, 1) . substr($V, $k, 1)
  34.     }
  35.  
  36.     return $c
  37. }
vika, у меня два предложения для улучшения темы и ускорения решения твоей задачи:
1. Отформатировать код для повышения читаемости.
2. Указать в [code] язык для включения подсветки. [code=javascript] и [code=perl] соответственно.
Заметь, о безобразиях синтаксиса еще не слова. Ага
Сделано. Просто, форматированный код, это вроде как сугубо индивид. понятие, кому как удобнее.  Синтаксис хоть и корявый, но работает же код... Язык в кодах указан. Код (на джаваскрипте) и правда не мой, но вроде как этого и не скрываю. А поделка на перл - моя.
isnan джаваскриптовая функция, т.к. в перл ее нету де факто, а городить шляпу из еще одной функции не то, то вот и была подобрана такая альтернатива.
Вопрос то, собственно в том, почему одни строки на перл и яве кодируются одинаково, а друге - нет. Где костыль?
« Последнее редактирование: 08-03-2013 07:32 от RXL » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 07-03-2013 21:33 » 

vika, ты хочешь поворить код или понять как это работает?
Если понять, то постарайся дать пременным человеческие имена

ну как можно разбираться в этом птичьем язЕке?
Цитата
($a, $b) = @_;
   $V = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
   $c,$d;
   $e, $f, $g, $h, $k, $p = 0;
Ты вот можешь сказать
Что вообще эта функция делает, что поступает на вход, и что имее на выходе
даю наводку
a - inputStr
b - cryptCode
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #8 : 08-03-2013 01:18 » 

Приношу свои глуб. извинения. Хотя, лично мне так намного удобнее, т.к. с этим кодом уже довольно давно экспериментирую. Сейчас поправим.  Здесь была моя ладья...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 08-03-2013 07:16 » 

Для удобства обсуждения я включил в ответе №6 нумерацию строк. За одно отформатировал код.

И так, Вика, расскажи, что происходит в каждой из следующих строк: 3, 4, 5 и 6.
« Последнее редактирование: 08-03-2013 07:33 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 08-03-2013 07:18 » 

Цитата
лично мне так намного удобнее
Мне глубоко по фонарю как там названы перменные (я понимаю, почти, как это работает)
Но! Чтобы мы говорили на одном языке - выберем для этого человекопонятные названия пременных
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #11 : 09-03-2013 06:37 » 

Цитата: RXL
расскажи, что происходит в каждой из следующих строк: 3, 4, 5 и 6.
В строке 3 происходит передача параметров подпрограмме из массива, в 4,5,6 - объявили переменные и присвоили им начальные значения.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 09-03-2013 06:50 » 

Ты ответила меньше чем наполовину. Да, в строке 3 происходит приравнивание переменным $a и $b значений параметров, и, да, в строке 4 происходит приравнивание значения переменной $V, и, да, в строке 6 происходит приравнивание значения переменной $p. НО:

1. Какие это переменные? Вот тебе намек:

Код: (Perl)
sub xxx
{
    $var = 123;
}

xxx();
print $var, "\n";

Отсюда: как объявить корректно?

2. Строка 5: здесь нет объявления переменных. Читаем: а) списочный оператор «,»; б) автооживление переменных (только при no vars или no strict).

3. Та же беда в строке 6. Но тут еще есть присвоение. Т.ч. кроме вышеуказанного смотрим таблицу приоритета операций. Иначе фактический результат может быть далек от предполагаемого.

4. Мой тебе совет: если выражение завершается, поставь после него «;» и не искушай синтаксический анализатор. Выпендриваться можно бесконечно, Perl и не такое допускает, но быстрого и гарантированного результата можно добиться только при строгом соблюдении правил. Это как писать каллиграфически и «как курица лапой»: кого быстрее поймут и у кого окажется меньше ошибок?

И давай стразу договоримся: традиции нашего форума — помочь понять, но если ты хочешь готового ответа, то пришла не по адресу и лучше сразу иди на free-lance.
« Последнее редактирование: 09-03-2013 06:53 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 09-03-2013 07:04 » 

7. Зачем?

9-13 - Что?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #14 : 09-03-2013 07:17 » 

Цитата
лично мне так намного удобнее
Мне глубоко по фонарю как там названы переменные (я понимаю, почти, как это работает)
Но! Чтобы мы говорили на одном языке - выберем для этого человекопонятные названия перемененных
Вот так вот получше на ваш взгляд, уважаемый Sla ?
Код: (Perl)

sub decode ($$)
    {
        ($inputStr, $cryptCode) = @_;
        $V = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
        $output, $out;
        $chr1, $chr2, $enc1, $enc2, $enc3, $p = 0;
        $cryptCode &= 255;
     
        for ($chr2 = 0; $chr2 < length $inputStr; $chr2++)
        {
            $out .= chr($cryptCode ^ ord(substr($inputStr, $chr2)))
        }
     
        for ($inputStr = $out; $p < length $inputStr;)
        {
            $chr1 = ord(substr($inputStr, $p++));
            $out = ord(substr($inputStr, $p++));
            $chr2 = ord(substr($inputStr, $p++));
            $enc1 = $chr1 >> 2;
            $chr1 = ($chr1 & 3) << 4 | $out >> 4;
            $enc2 = ($out & 15) << 2 | $chr2 >> 6;
            $enc3 = $chr2 & 63;
     
            if ($out != $out)
            {
                $enc2 = $enc3 = 64
            }
            elsif ($chr2 != $chr2)
            {
                $enc3 = 64
            }
     
            $output = $output . substr($V, $enc1, 1) . substr($V, $chr1, 1) . substr($V, $enc2, 1) . substr($V, $enc3, 1)
        }
     
        return $output
    }
7. Зачем?
9-13 - Что?
7 - операция "И".  А 9 - 13 ,по видимому, для усложнения кода. Ввиду того, что жаба скрипт не мое творение, зачем оно там я понятия не имею, уж не сердитесь. Моя задача по аналогии "накидать" тоже самое на perl.
« Последнее редактирование: 09-03-2013 07:26 от vika » Записан
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #15 : 09-03-2013 07:25 » 

Ты ответила меньше чем наполовину. Да, в строке 3 происходит приравнивание переменным $a и $b значений параметров, и, да, в строке 4 происходит приравнивание значения переменной $V, и, да, в строке 6 происходит приравнивание значения переменной $p. НО:

1. Какие это переменные? Вот тебе намек:

Код: (Perl)
sub xxx
{
    $var = 123;
}

xxx();
print $var, "\n";

Отсюда: как объявить корректно?

2. Строка 5: здесь нет объявления переменных. Читаем: а) списочный оператор «,»; б) автооживление переменных (только при no vars или no strict).

3. Та же беда в строке 6. Но тут еще есть присвоение. Т.ч. кроме вышеуказанного смотрим таблицу приоритета операций. Иначе фактический результат может быть далек от предполагаемого.

4. Мой тебе совет: если выражение завершается, поставь после него «;» и не искушай синтаксический анализатор. Выпендриваться можно бесконечно, Perl и не такое допускает, но быстрого и гарантированного результата можно добиться только при строгом соблюдении правил. Это как писать каллиграфически и «как курица лапой»: кого быстрее поймут и у кого окажется меньше ошибок?

И давай стразу договоримся: традиции нашего форума — помочь понять, но если ты хочешь готового ответа, то пришла не по адресу и лучше сразу иди на free-lance.

Спасибо, вечером подумаем. Тоже было сомнение по поводу обьявления перменных, глобально, локально, только не пред. значение этому. А по поводу готового ответа - я все понимаю, в наше время за тебя делать никто не будет, не первый год замужем  Улыбаюсь
« Последнее редактирование: 09-03-2013 07:28 от vika » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 09-03-2013 07:58 » 

Код: (Perl)
  1.         for ($chr2 = 0; $chr2 < length $inputStr; $chr2++)
  2.         {
  3.             $out .= chr($cryptCode ^ ord(substr($inputStr, $chr2)))
  4.         }

Я бы спросил - а в чем разница между out и d


что вообще происходит  в этой строке..
И...

Слушай внимательно!!!!
Начинаю цикл
  Присваиваю некой переменной значение  равное, а теперь внимательно!!!!, самой переменной  клееной с другой пременной
Заканчиваю цикл


Все переменные должны быть определены. В js-скрипте это сделано.
« Последнее редактирование: 09-03-2013 08:51 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 09-03-2013 08:21 » 

Тоже было сомнение по поводу обьявления перменных, глобально, локально, только не пред. значение этому.

Настоятельно рекомендую изучить этот вопрос. Он важен в любом языке.

А по поводу готового ответа - я все понимаю, в наше время за тебя делать никто не будет, не первый год замужем  Улыбаюсь

Глупо думать, что сейчас особенное время, отличное от какого-то другого. Люди одинаковы во все времена. Глупый студент, только чтобы потешить свое ЧСВ и выпендриться перед женским ником (анонимность!) готов выдавать ответы на гора, совсем не думая о результате. Человек более опытный либо не будет делиться, либо поделиться, но делать за кого-то не станет, т.к. время можно заменить на деньги или другой способ получить получить удовлетворение. Обучение тоже есть удовлетворение. Если, конечно, ученик это понимает.

Добавлено через 3 минуты и 17 секунд:
Все пременный должны быть определены. В js-скрипте это сделано.

Вот именно. И чтобы избежать ошибок, предлагаю сперва навести порядок:
1. Завершение выражений.
2. Аргументы функций только в скобках.
3. Обязательное объявление переменных.
4. Как следствие, надо включить use strict и потеть до исчезновения ошибок.
« Последнее редактирование: 09-03-2013 08:27 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
vika
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #18 : 14-03-2013 01:40 » new

Цитата: RXL
Настоятельно рекомендую изучить этот вопрос. Он важен в любом языке.

Будет сделано.  Улыбаюсь

Цитата: RXL
Глупо думать, что сейчас особенное время, отличное от какого-то другого. Люди одинаковы во все времена. Глупый студент, только чтобы потешить свое ЧСВ и выпендриться перед женским ником (анонимность!) готов выдавать ответы на гора, совсем не думая о результате. Человек более опытный либо не будет делиться, либо поделиться, но делать за кого-то не станет, т.к. время можно заменить на деньги или другой способ получить получить удовлетворение. Обучение тоже есть удовлетворение. Если, конечно, ученик это понимает.
Ну, времена все таки разные. Раньше человеку станет на улице плохо, так ему окажут помощь, вызовут врача. Сейчас же толпа зевак разве что поглазеет, да люмпеновско-маргинальная прослойка обберет, а то и добъет.  Здесь была моя ладья... Что не говорите, уважаемый RXL, но вы либо за границей живете, либо в каком то заоблачном мире витаете...
И что значит "Глупый студент, только чтобы потешить свое ЧСВ и выпендриться перед женским ником (анонимность!) готов выдавать ответы на гора, совсем не думая о результате."
Глупые студенты тешут свое .... попивая пиво, да языком цепляя прохожих. Вы думаете, что кто то находит удовлетворение в ковырянии кода??? А анонимность тут вообще не причем. может, я просто с полом еще определиться не могу. Не могу...

Цитата: RXL
Вот именно. И чтобы избежать ошибок, предлагаю сперва навести порядок:
1. Завершение выражений.
2. Аргументы функций только в скобках.
3. Обязательное объявление переменных.
4. Как следствие, надо включить use strict и потеть до исчезновения ошибок.
Код конечно можно вылизать до безупречности. Но, как оказалось, собака зарыта немного глубже  Отлично А дело в том, что перл коряво работает с utf8, с прагмами толком еще надо разбираться. И вот когда с сервера приходят данные в кодировке utf8, что то с ними происходит, они портятся и в результате на выходе кодировщика как раз и получается шляпа. Это было выяснено опытным путем. Т.е., строка нормально кодировалась в локальной версии кодировщика, а в составе программы она почему то портилась. В общем, всем спасибо за участие, будем разбираться.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 14-03-2013 06:08 » 

В «заграницах», где я живу, как при советской власти, так и сейчас картина одна и та же: могут пройти мимо, а могут совершенно безвозмездно помочь. Люди не меняются, но их стало слишком много. Но это все офтоп. Надеюсь суть того абзаца моего поста дошла до тебя, а не только формулировка.

Перл работает не коряво. Просто у кого-то мало знаний и много уверенности в своем уникальном пути. Ага
Рекомендую начинать каждую программу на Perl так и разбирать каждое возникающее предупреждение или ошибку:

Код: (Perl)
#!/usr/bin/perl -W
use strict;

Код конечно можно вылизать до безупречности. Но, как оказалось, собака зарыта немного глубже  Отлично А дело в том, что перл коряво работает с utf8, с прагмами толком еще надо разбираться. И вот когда с сервера приходят данные в кодировке utf8, что то с ними происходит, они портятся и в результате на выходе кодировщика как раз и получается шляпа. Это было выяснено опытным путем. Т.е., строка нормально кодировалась в локальной версии кодировщика, а в составе программы она почему то портилась. В общем, всем спасибо за участие, будем разбираться.

Насчет UTF-8 я уже писал: внутри Perl имеет преставление строк в виде UTF-8. Задача программиста дать понять, какого формата его константы и полученные извне строки.
Была у нас тема на счет перекодировок: https://forum.shelek.ru/index.php/topic,25664.0.html
Насчет «нормально»: это не аргумент. Приведи пример кода для теста.

« Последнее редактирование: 14-03-2013 06:10 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines