The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Windows, cp1251 и прочие ништяки"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Perl)
Изначальное сообщение [ Отслеживать ]

"Windows, cp1251 и прочие ништяки"  +/
Сообщение от localhorst (ok) on 03-Мрт-12, 00:06 
Что-то у меня случился затык.
Я пытаюсь делать так:

~~~~~~~
use XML::Simple;
use Cwd;
use Data::Dumper;


my $pwd = cwd; # get current directory
my $filename = 'Report.xml';

open my $output, '>', "$pwd/Out.txt";

open my $file, '<', $filename or die "Unable to open file ($pwd/$filename): $!\n";
my $xml = eval { XMLin($file) };
if ($@) {
    die "Error while parsing xml file ($filename): $@\n";
}
print $output Dumper($xml);
close $file;
close $output;
~~~~~~~

Начало XMLки выглядит так:
~~~~~~~
<?xml version="1.0" encoding="Windows-1251"?>
<Report><Lang>ru</Lang>
<Page><Title>Отчёт</Title><Icon>112</Icon>
<Item><Title>Версия</Title><Icon>112</Icon><ID>257</ID><Value>AIDA64 v1.70.1400/ru</Value></Item>
~~~~~~~

Файл в cp1251, проверял нотпадом++.
Однако в Out.txt получается так:
~~~~~~~
VAR1 = {
          'Lang' => 'ru',
          'Page' => [
                    {
                      'Item' => [
                                {
                                  'ID' => '257',
                                  'Value' => 'AIDA64 v1.70.1400/ru',
                                  'Icon' => '112',
                                  'Title' => "\x{412}\x{435}\x{440}\x{441}\x{438}\x{44f}"
                                },
~~~~~~~

При этом нотпад++ говорит, что кодировка ANSI.
Грабли где-то в недрах винды, вот только какие и почему вообще - не ясно.
Код пишу в padre, сам перл такой:
C:\Users\Insane>perl -v

This is perl 5, version 14, subversion 2 (v5.14.2) built for MSWin32-x86-multi-t
hread

Copyright 1987-2011, Larry Wall

Умные люди, подскажите, где я неправ?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Windows, cp1251 и прочие ништяки"  +/
Сообщение от cirus on 03-Мрт-12, 03:01 
А что не нравится?


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Windows, cp1251 и прочие ништяки"  +/
Сообщение от Square (ok) on 03-Мрт-12, 11:55 
> А что не нравится?

очевидно автоматическая конвертация русских букв вот в это:
    'Title' => "\x{412}\x{435}\x{440}\x{441}\x{438}\x{44f}"

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Windows, cp1251 и прочие ништяки"  +/
Сообщение от Pahanivo (ok) on 05-Мрт-12, 08:28 
нашел старый скрипт в котором разбирал кириллицу, там вот такое в юзах:

use locale; use POSIX qw(locale_h); setlocale(LC_CTYPE,"ru_RU.CP1251");

может поможет ...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Windows, cp1251 и прочие ништяки"  +/
Сообщение от cirus on 30-Мрт-12, 23:23 
Вообще, Dumper + utf8 + внешний файл - это гремучая смесь. Настоятельно рекомендую не использовать Dumper.

А мультибайтовой кодировке в 5.14 недавно удивлялись на Точке: http://xpoint.ru/forums/programming/perl/regexp/thread/45820...


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру