Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > \u00ab\u043f\u0440\u0438\u0432\u0435


Автор: burakov 2.3.2012, 00:01
Добрый день,
раскодируйте пожалуйста по русски это чем нибудь
\u00ab\u043f\u0440\u0438\u0432\u0435

Код

use JSON;
my $perl_scalar = from_json ( $str, {utf8 => 1});


дает ошибку
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before


и все остальные варианты модулей  json тоже не помогли - везде какие то ошибки лезут.

подскажите готовое решение ...
должен же хоть какой то модуль работать по раскодировке json???


Огромное спасибо.

Автор: Nica 2.3.2012, 00:47
burakov

$perl_scalar - надо декодировать


Код

    use Encode;
    $string = decode("utf8", $octets);

Автор: burakov 2.3.2012, 13:25
Товарищи - ничего не получается!
дайте кусочек готового скрипта,
так чтобы 
с этой абракадабры русские буквы получились

пробовал декодировать в utf8 
все равно ошибка

попробовал

Код

use strict;
use warnings;
use JSON::XS;
use URI::Escape;

my $str = '\u00ab\u043f\u0440\u0438\u0432\u0435\u0442\u00bb';

my $json_xs = JSON::XS -> new();
$json_xs -> utf8 (1);
$str = $json_xs -> decode ($str);
print $str ."\n";


пишет ошибку

malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before
"\\u00ab\\u043f\\u044...") at F:\work_georg\yell.ru\test.pl line 10.

что нужно сделать??
спасибо.

Автор: DurRandir 2.3.2012, 16:23
Цитата
malformed JSON string

Какое слово в этой фразе вам непонятно?)

Автор: burakov 3.3.2012, 12:19
Всем спасибо за такие ответы, за замечательные советы.
очень помогло.

проблему решил.
и тем кто с ней не сталкивался,
оставляю решение. может оно многих насмешит, но 
может кому то и поможет

Итак.
ошибка была в том, что я брал кусок кода
для расшифровки, а нужно было брать всю закодированную страничку, да еще и считать ее из файла "как есть".

подпрограмма принимает строку, а JSON::XS делает из нее хэш (можно дампером это увидеть),
после чего я прохожусть по этому хэшу и собираю это дело обратно в строку - получаю текст.
и возвращаю его.

Код

sub convert_json {
    use JSON::XS;
    my $content = shift;
    
    my @content = ();
    $content = decode_json ($content);    
    while (my ($key , $value) = each %$content) {
        $value = encode ('cp1251', $value);
        push (@content, $value);
    }
    my $str = join ('', @content); 
    return $str;
}


Всем доброго дня. smile. Тему закрываю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)