Thread LWP::UserAgent UTF-8-Mangling die 2991992ste (24 answers)
Opened by Your_name at 2018-10-23 14:29

GwenDragon
 2018-10-23 17:15
#189010 #189010
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Folgendes klappt bei mir mit Perl 5.14 :P

Quelldatei ist UTF-8 und XML.
Konsole ist Unicode zu Testausgabe.

get.pl
Code (perl): (dl )
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
#!/usr/bin/perl

use strict;
use warnings;

use 5.010;
use utf8;

use LWP::UserAgent;
use HTTP::Request;

my $ua = LWP::UserAgent->new;
$ua->agent("MyApp/0.1 ");
$ua->default_header('Accept-Encoding' => 'gzip');
 
# Create a request
my $req = HTTP::Request->new(GET => 'https://labs.gwendragon.de/test/data.xml');

 # Pass request to the user agent and get a response back
my $res = $ua->request($req);

my ($content, $output);
# Check the outcome of the response
if ($res->is_success) {
        $content = $res->content;
        say $req->as_string;
        say $res->as_string;
        say '------------------------------';
}
else {
    say $res->status_line;
}

say "";
say "===== Gunzpped ===============";
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
my $status = gunzip(\$content => \$output) or die "gunzip failed: $GunzipError\n";
say $output;
open my $FH, '>', 'get.data';
binmode $FH;
say $FH $output;


Code: (dl )
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
PERL-5.14 T:\>chcp
Aktive Codepage: 65001.

PERL-5.14 T:\>perl get.pl
GET https://labs.gwendragon.de/test/data.xml
Accept-Encoding: gzip
User-Agent: MyApp/0.1 libwww-perl/6.04

HTTP/1.1 200 OK
Cache-Control: max-age=84501
Connection: Upgrade, close
Date: Tue, 23 Oct 2018 15:11:10 GMT
Upgrade: h2,h2c
Accept-Ranges: bytes
ETag: "e4-578e65676f100-gzip"
Server: Apache
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 200
Content-Type: application/xml
Expires: Wed, 24 Oct 2018 14:39:32 GMT
Last-Modified: Tue, 23 Oct 2018 14:39:32 GMT
Client-Date: Tue, 23 Oct 2018 15:11:10 GMT
Client-Peer: 213.133.110.246:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
Client-SSL-Cert-Subject: /CN=labs.gwendragon.de
Client-SSL-Cipher: ECDHE-RSA-AES256-GCM-SHA384
Client-SSL-Socket-Class: IO::Socket::SSL
Content-Security-Policy: script-src 'self'
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=15768000; includeSubDomains
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Frame-Options: sameorigin
X-LoadTime: D=489 us
X-Powered-By: Perl
X-Robots-Tag: noarchive, noodp, noimageindex
X-XSS-Protection: 1; mode=block

5=@{N1X 0!1Qn-( ݞě^fcK
xUU nHy|>M\B"`XhZTP4֏; p0.LDģy"YBk| )~)H8srA._±-R "-Ɇ

------------------------------
===== Gunzpped ===============
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Jürgen Müller-Büßlich</name>
<nick>Jört</nick>
<comment>Möglicherweise ist das große ß doch ein ẞ. Prüfen Sie das bitte möglichst rasch.</comment>
</person>

PERL-5.14 T:\>file get.data
get.data: XML 1.0 document, UTF-8 Unicode text, with CRLF line terminators


get.data hat dann korrekte UTF-8-Zeichenketten.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
T:\>hd get.data

/0 /1 /2 /3 /4 /5 /6 /7 /8 /9/ A /B /C /D /E /F 0123456789ABCDEF
0000 : 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 <?xml version="1
0010 : 2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 55 54 .0" encoding="UT
0020 : 46 2D 38 22 3F 3E 0D 0A 3C 70 65 72 73 6F 6E 3E F-8"?>..<person>
0030 : 0D 0A 20 20 3C 6E 61 6D 65 3E 4A C3 BC 72 67 65 .. <name>J..rge
0040 : 6E 20 4D C3 BC 6C 6C 65 72 2D 42 C3 BC C3 9F 6C n M..ller-B....l
0050 : 69 63 68 3C 2F 6E 61 6D 65 3E 0D 0A 20 20 3C 6E ich</name>.. <n
0060 : 69 63 6B 3E 4A C3 B6 72 74 3C 2F 6E 69 63 6B 3E ick>J..rt</nick>
0070 : 0D 0A 20 20 3C 63 6F 6D 6D 65 6E 74 3E 4D C3 B6 .. <comment>M..
0080 : 67 6C 69 63 68 65 72 77 65 69 73 65 20 69 73 74 glicherweise ist
0090 : 20 64 61 73 20 67 72 6F C3 9F 65 20 C3 9F 20 64 das gro..e .. d
00A0 : 6F 63 68 20 65 69 6E 20 E1 BA 9E 2E 20 50 72 C3 och ein .... Pr.
00B0 : BC 66 65 6E 20 53 69 65 20 64 61 73 20 62 69 74 .fen Sie das bit
00C0 : 74 65 20 6D C3 B6 67 6C 69 63 68 73 74 20 72 61 te m..glichst ra
00D0 : 73 63 68 2E 3C 2F 63 6F 6D 6D 65 6E 74 3E 0D 0A sch.</comment>..
00E0 : 3C 2F 70 65 72 73 6F 6E 3E 0D 0A </person>..


//EDIT: Funktioniert auch unter Debian 9 mit Perl 5.24.1 so.

Muss dein System sein, das "Scheiß" (wie du dich ausdrückst) macht.
Also rück mal raus mit mehr Informationen.
Last edited: 2018-10-23 19:00:21 +0200 (CEST)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

View full thread LWP::UserAgent UTF-8-Mangling die 2991992ste