Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Отправка строк UTF8 на сервер


Автор: JamesMorgan 12.10.2013, 11:59
Привет всем,столкнулся с такой проблемой, читаю фаил который хранит в себе utf8 строки и создаю пакет для отправки, серверное приложение получает пакет но при декодировании получает такой результат: \0\0\0\0\0\0\0\0\0, может я не правильно строки utf8 с помощью pack кладу?
Код

use IO::Socket;
use Data::Dumper;


open (FILE,"D:\data.txt") or die "$!";


my $packet;
my $socket = IO::Socket::INET->new(PeerPort => '5540', PeerAddr => '127.0.0.1', Proto => 'tcp') or die "$!";

my $i = 0;
while (my $line = <FILE>) 
{
    chomp($line);
    my ($firstname,$lastname,) = split(';',$line);
    
        $packet .= pack("i1",length($firstname));
        $packet .= pack("U1",$firstname);
        $packet .= pack("i1",length($lastname));
        $packet .= pack("U1",$lastname);
        $i++; 
}


$socket->send($packet);


Длина приходит правильная а все остальное в таких вот нулях и слешах, можете сказать что я не так делаю? испробовал уже Encode, utf8 и т.д нечего не помогло

Автор: Pfailed 17.10.2013, 10:13
Я бы сделал так
Код

pack("iia*a*", length($first), length($last), $first, $last);


Код

my @len = unpack("ii", $str);
my (undef, undef, $first, $last) = unpack(sprintf("iia%da%d", @len), $str);


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