$utf8::hint_bits = 0x00800000;
-our $VERSION = '1.02';
+our $VERSION = '1.03';
sub import {
$^H |= $utf8::hint_bits;
use utf8;
no utf8;
+ # Convert a Perl scalar to/from UTF-8.
$num_octets = utf8::upgrade($string);
$success = utf8::downgrade($string[, FAIL_OK]);
+ # Change the native bytes of a Perl scalar to/from UTF-8 bytes.
utf8::encode($string);
utf8::decode($string);
in future we would like to standardize on the UTF-8 encoding for
source text.
+B<Do not use this pragma for anything else than telling Perl that your
+script is written in UTF-8.> The utility functions described below are
+useful for their own purposes, but they are not really part of the
+"pragmatic" effect.
+
Until UTF-8 becomes the default format for source text, either this
pragma or the L</encoding> pragma should be used to recognize UTF-8
in the source. When UTF-8 becomes the standard source format, this
follows the term I<UTF-X> is used to refer to UTF-8 on ASCII and ISO
Latin based platforms and UTF-EBCDIC on EBCDIC based platforms.
+See also the effects of the C<-C> switch and its cousin, the
+C<$ENV{PERL_UNICODE}>, in L<perlrun>.
+
Enabling the C<utf8> pragma has the following effect:
=over 4
The following functions are defined in the C<utf8::> package by the
Perl core. You do not need to say C<use utf8> to use these and in fact
-you should not unless you really want to have UTF-8 source code.
+you should not say that unless you really want to have UTF-8 source code.
=over 4
=item * utf8::encode($string)
-Converts (in-place) I<$string> from logical characters to octet
-sequence representing it in Perl's I<UTF-X> encoding. Returns
-nothing. Same as Encode::encode_utf8(). Note that this should not be
-used to convert a legacy byte encoding to Unicode: use Encode for
-that.
+Converts in-place the octets of the I<$string> to the octet sequence
+in Perl's I<UTF-X> encoding. Returns nothing. B<Note that this does
+not change the "type" of I<$string> to UTF-8>, and that this handles
+only ISO 8859-1 (or EBCDIC) as the source character set. Therefore
+this should not be used to convert a legacy 8-bit encoding to Unicode:
+use Encode::decode() for that. In the very limited case of wanting to
+handle just ISO 8859-1 (or EBCDIC), you could use utf8::upgrade().
=item * utf8::decode($string)
Attempts to convert I<$string> in-place from Perl's I<UTF-X> encoding
-into logical characters. Returns nothing. Same as Encode::decode_utf8().
-Note that this should not be used to convert Unicode back to a legacy
-byte encoding: use Encode for that.
+into octets. Returns nothing. B<Note that this does not change the
+"type" of <$string> from UTF-8>, and that this handles only ISO 8859-1
+(or EBCDIC) as the destination character set. Therefore this should
+not be used to convert Unicode back to a legacy 8-bit encoding:
+use Encode::encode() for that. In the very limited case of wanting
+to handle just ISO 8859-1 (or EBCDIC), you could use utf8::downgrade().
=item * $flag = utf8::is_utf8(STRING)
=head1 SEE ALSO
-L<perluniintro>, L<encoding>, L<perlunicode>, L<bytes>
+L<perluniintro>, L<encoding>, L<perlrun>, L<bytes>, L<perlunicode>
=cut