1#
2# decode on Perl 5.005, 5.6, 5.8 or later
3#
4use strict;
5use Test::More;
6
7BEGIN { plan tests => 6 };
8
9BEGIN { $ENV{PERL_JSON_BACKEND} = 0; }
10
11use JSON;
12
13BEGIN {
14    use lib qw(t);
15    use _unicode_handling;
16}
17
18no utf8;
19
20my $json = JSON->new->allow_nonref;
21
22
23is($json->decode(q|"ü"|),                   "ü"); # utf8
24is($json->decode(q|"\u00fc"|),           "\xfc"); # latin1
25is($json->decode(q|"\u00c3\u00bc"|), "\xc3\xbc"); # utf8
26
27my $str = 'あ'; # Japanese 'a' in utf8
28
29is($json->decode(q|"\u00e3\u0081\u0082"|), $str);
30
31utf8::decode($str); # usually UTF-8 flagged on, but no-op for 5.005.
32
33is($json->decode(q|"\u3042"|), $str);
34
35
36my $utf8 = $json->decode(q|"\ud808\udf45"|); # chr 12345
37
38utf8::encode($utf8); # UTf-8 flaged off
39
40is($utf8, "\xf0\x92\x8d\x85");
41
42