Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl, загадочные трансформации кириллицы в UTF / 2 сообщений из 2, страница 1 из 1
10.06.2016, 10:05
    #39254044
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl, загадочные трансформации кириллицы в UTF
Есть скрипт на Perl, в нем подключаются самописные модули.
Примерно так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
use utf8;
use JobLogger;
...
my $log = Logger->new();
...
$log->run("# Отработка задания по созданию автоматически подключаемых пакетов");
...
$log->log("- Загрузка списка клиентов...");
...

----конец файла----

use utf8;
package Logger;
...
sub new
{
...
}
sub DESTROY
{
  my $self = shift;
  my $time = time - $start;
  $self->run("*** Завершено, время работы: $time");
...
}
...
sub _file($$$)
{
  my $self = shift;
  my $file = shift;
  my $data = shift;
  my $pid = " [$$]";
  my $clock = $self->_timestamp();
  open (LOG, ">>:utf8", $file);
  my $ofh = select(LOG);
  $| = 1;
  select($ofh);
  if (defined($data) && length($data)>0)
  {
    print LOG "${clock}:${pid} ${data}\n";
  }
  else
  {
    print LOG "\n";
  }
  close(LOG);
}

sub log
{
  my $self = shift;
  my $data = $self->_data(@_);
  my $file = ($self->{'config'}->{'dir'}||'') . ($self->{'config'}->{'file'});
  $self->_file("$file.log-work",$data);
  $self->print($data) if (($self->{'config'}->{'echo'} & LOG_ECHO_LOG) == LOG_ECHO_LOG);
  $self->{'counter'}->{'log'}++;
}

sub run
{
  my $self = shift;
  my $data = $self->_data(@_);
  my $file = ($self->{'config'}->{'dir'}||'') . ($self->{'config'}->{'file'});
  $self->_file("$file.log-state",$data);
  $self->_file("$file.log-work",$data) if ($self->{'config'}->{'log'});
  $self->print($data) if (($self->{'config'}->{'echo'} & LOG_ECHO_RUN) == LOG_ECHO_RUN);
  $self->{'counter'}->{'log'}++ if ($self->{'config'}->{'log'});;
  $self->{'counter'}->{'run'}++;
}
...



pl и pm файлы в кодировке UTF8.
log-файлы тоже в кодировке UTF8.
Но при этом сегодня в логе заметил такую строку:
Код: plaintext
2016-06-10 07:05:03: [16865] *** Завершено, время рабојы: 2
Как она могла получиться?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
29.06.2016, 17:50
    #39264932
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl, загадочные трансформации кириллицы в UTF
Мистика объяснилась банальным образом.
Файл я просматривал с помощью mc.
А он почему-то в каких-то редких случаях при отображении заменял русские буквы (например "т") на английские (например "j").
Если текст выводить в консоль или открывать другим редактором, то все нормально.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl, загадочные трансформации кириллицы в UTF / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]