Devel-IPerl-Plugin-Perlbrew
view release on metacpan or search on metacpan
bin/perlbrewise-spec view on Meta::CPAN
501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054is a short comparison:
C<utf8> controls whether the JSON text created by C<encode> (and expected
by C<decode>) is UTF-8 encoded or not,
while
C<latin1> and C<ascii> only
control whether C<encode> escapes character
values
outside their respective
codeset range. Neither of these flags conflict
with
each
other, although
some combinations make less sense than others.
Care
has
been taken to make all flags symmetrical
with
respect to
C<encode> and C<decode>, that is, texts encoded
with
any combination of
these flag
values
will be correctly decoded
when
the same flags are used
decoding you likely have a bug somewhere.
Below comes a verbose discussion of these flags. Note that a
"codeset"
is
simply an abstract set of character-codepoint pairs,
while
an encoding
takes those codepoint numbers and I<encodes> them, in
our
case into
octets. Unicode is (among other things) a codeset, UTF-8 is an encoding,
and ISO-8859-1 (= latin 1) and ASCII are both codesets I<and> encodings at
the same
time
, which can be confusing.
=over 4
=item C<utf8> flag disabled
When C<utf8> is disabled (the default), then C<encode>/C<decode> generate
and expect Unicode strings, that is, characters with high ordinal Unicode
values (> 255) will be encoded as such characters, and likewise such
characters are decoded as-is, no changes to them will be done, except
"(re-)interpreting" them as Unicode codepoints or Unicode characters,
respectively (to Perl, these are the same thing in strings unless you do
funny/weird/dumb stuff).
This is useful when you want to do the encoding yourself (e.g. when you
want to have UTF-16 encoded JSON texts) or when some other layer does
the encoding for you (for example, when printing to a terminal using a
filehandle that transparently encodes to UTF-8 you certainly do NOT want
to UTF-8 encode your data first and have Perl encode it another time).
bin/perlbrewise-spec view on Meta::CPAN
516551665167516851695170517151725173517451755176517751785179518051815182518351845185C<__proto__> property name
for
its own purposes.
If that is a problem, you could parse
try
to filter the resulting JSON
output
for
these property strings, e.g.:
$json
=~ s/
"__proto__"
\s*:/
"__proto__renamed"
:/g;
This works because C<__proto__> is not valid outside of strings, so every
occurrence of C<
"__proto__"
\s*:> must be a string used as property name.
Unicode non-characters between U+FFFD and U+10FFFF are decoded either
to the recommended U+FFFD REPLACEMENT CHARACTER (see Unicode PR
#121:
Recommended Practice
for
Replacement Characters), or in the binary or
relaxed mode left as is, keeping the illegal non-characters as
before
.
Raw non-Unicode characters outside the valid unicode range fail now to
parse, because "A string is a sequence of zero or more Unicode
characters
" RFC 7159 section 1 and "
JSON text SHALL be encoded in
flag
when
parsing unicode.
( run in 0.319 second using v1.01-cache-2.11-cpan-05444aca049 )