<A HREF="../../lib/Pod/perlfunc.html#item_write"><CODE>write()</CODE></A>, and <A HREF="../../lib/Pod/perlfunc.html#item_length"><CODE>length()</CODE></A>. Operators that specifically don't switch
include <A HREF="../../lib/Pod/perlfunc.html#item_vec"><CODE>vec()</CODE></A>, <A HREF="../../lib/Pod/perlfunc.html#item_pack"><CODE>pack()</CODE></A>, and <A HREF="../../lib/Pod/perlfunc.html#item_unpack"><CODE>unpack()</CODE></A>. Operators that really
don't care include <A HREF="../../lib/Pod/perlfunc.html#item_chomp"><CODE>chomp()</CODE></A>, as well as any other operator that
treats a string as a bucket of bits, such as <A HREF="../../lib/Pod/perlfunc.html#item_sort"><CODE>sort()</CODE></A>, and the
operators dealing with filenames.
<P></P>
<LI>
The <A HREF="../../lib/Pod/perlfunc.html#item_pack"><CODE>pack()</CODE></A>/<A HREF="../../lib/Pod/perlfunc.html#item_unpack"><CODE>unpack()</CODE></A> letters ``<CODE>c</CODE>'' and ``<CODE>C</CODE>'' do <EM>not</EM> change,
since they're often used for byte-oriented formats. (Again, think
``<CODE>char</CODE>'' in the C language.) However, there is a new ``<CODE>U</CODE>'' specifier
that will convert between UTF-8 characters and integers. (It works
outside of the utf8 pragma too.)
<P></P>
<LI>
The <A HREF="../../lib/Pod/perlfunc.html#item_chr"><CODE>chr()</CODE></A> and <A HREF="../../lib/Pod/perlfunc.html#item_ord"><CODE>ord()</CODE></A> functions work on characters. This is like
<A HREF="../../lib/Pod/perlfunc.html#item_pack"><CODE>pack("U")</CODE></A> and <A HREF="../../lib/Pod/perlfunc.html#item_unpack"><CODE>unpack("U")</CODE></A>, not like <A HREF="../../lib/Pod/perlfunc.html#item_pack"><CODE>pack("C")</CODE></A> and
<A HREF="../../lib/Pod/perlfunc.html#item_unpack"><CODE>unpack("C")</CODE></A>. In fact, the latter are how you now emulate
byte-oriented <A HREF="../../lib/Pod/perlfunc.html#item_chr"><CODE>chr()</CODE></A> and <A HREF="../../lib/Pod/perlfunc.html#item_ord"><CODE>ord()</CODE></A> under utf8.
<P></P>
<LI>
And finally, <A HREF="../../lib/Pod/perlfunc.html#item_reverse"><CODE>scalar reverse()</CODE></A> reverses by character rather than by byte.
<P></P></UL>
<P>
<H2><A NAME="character encodings for input and output">Character encodings for input and output</A></H2>
<P>[XXX: This feature is not yet implemented.]</P>
<P>
<HR>
<H1><A NAME="caveats">CAVEATS</A></H1>
<P>As of yet, there is no method for automatically coercing input and
output to some encoding other than UTF-8. This is planned in the near
future, however.</P>
<P>Whether an arbitrary piece of data will be treated as ``characters'' or
``bytes'' by internal operations cannot be divined at the current time.</P>
<P>Use of locales with utf8 may lead to odd results. Currently there is
some attempt to apply 8-bit locale info to characters in the range
0..255, but this is demonstrably incorrect for locales that use
characters above that range (when mapped into Unicode). It will also
tend to run slower. Avoidance of locales is strongly encouraged.</P>
<P>
<HR>
<H1><A NAME="see also">SEE ALSO</A></H1>
<P><A HREF="../../lib/bytes.html">the bytes manpage</A>, <A HREF="../../lib/utf8.html">the utf8 manpage</A>, <A HREF="../../lib/Pod/perlvar.html#${^wide_system_calls}">${^WIDE_SYSTEM_CALLS} in the perlvar manpage</A></P>