Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / man / man3 / utf8.3
CommitLineData
920dae64
AT
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "utf8 3"
132.TH utf8 3 "2001-09-21" "perl v5.8.8" "Perl Programmers Reference Guide"
133.SH "NAME"
134utf8 \- Perl pragma to enable/disable UTF\-8 (or UTF\-EBCDIC) in source code
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 2
138\& use utf8;
139\& no utf8;
140.Ve
141.PP
142.Vb 3
143\& # Convert a Perl scalar to/from UTF-8.
144\& $num_octets = utf8::upgrade($string);
145\& $success = utf8::downgrade($string[, FAIL_OK]);
146.Ve
147.PP
148.Vb 3
149\& # Change the native bytes of a Perl scalar to/from UTF-8 bytes.
150\& utf8::encode($string);
151\& utf8::decode($string);
152.Ve
153.PP
154.Vb 2
155\& $flag = utf8::is_utf8(STRING); # since Perl 5.8.1
156\& $flag = utf8::valid(STRING);
157.Ve
158.SH "DESCRIPTION"
159.IX Header "DESCRIPTION"
160The \f(CW\*(C`use utf8\*(C'\fR pragma tells the Perl parser to allow \s-1UTF\-8\s0 in the
161program text in the current lexical scope (allow UTF-EBCDIC on \s-1EBCDIC\s0 based
162platforms). The \f(CW\*(C`no utf8\*(C'\fR pragma tells Perl to switch back to treating
163the source text as literal bytes in the current lexical scope.
164.PP
165This pragma is primarily a compatibility device. Perl versions
166earlier than 5.6 allowed arbitrary bytes in source code, whereas
167in future we would like to standardize on the \s-1UTF\-8\s0 encoding for
168source text.
169.PP
170\&\fBDo not use this pragma for anything else than telling Perl that your
171script is written in \s-1UTF\-8\s0.\fR The utility functions described below are
172useful for their own purposes, but they are not really part of the
173\&\*(L"pragmatic\*(R" effect.
174.PP
175Until \s-1UTF\-8\s0 becomes the default format for source text, either this
176pragma or the encoding pragma should be used to recognize \s-1UTF\-8\s0
177in the source. When \s-1UTF\-8\s0 becomes the standard source format, this
178pragma will effectively become a no\-op. For convenience in what
179follows the term \fIUTF-X\fR is used to refer to \s-1UTF\-8\s0 on \s-1ASCII\s0 and \s-1ISO\s0
180Latin based platforms and UTF-EBCDIC on \s-1EBCDIC\s0 based platforms.
181.PP
182See also the effects of the \f(CW\*(C`\-C\*(C'\fR switch and its cousin, the
183\&\f(CW$ENV{PERL_UNICODE}\fR, in perlrun.
184.PP
185Enabling the \f(CW\*(C`utf8\*(C'\fR pragma has the following effect:
186.IP "\(bu" 4
187Bytes in the source text that have their high-bit set will be treated
188as being part of a literal \s-1UTF\-8\s0 character. This includes most
189literals such as identifier names, string constants, and constant
190regular expression patterns.
191.Sp
192On \s-1EBCDIC\s0 platforms characters in the Latin 1 character set are
193treated as being part of a literal UTF-EBCDIC character.
194.PP
195Note that if you have bytes with the eighth bit on in your script
196(for example embedded Latin\-1 in your string literals), \f(CW\*(C`use utf8\*(C'\fR
197will be unhappy since the bytes are most probably not well-formed
198\&\s-1UTF\-8\s0. If you want to have such bytes and use utf8, you can disable
199utf8 until the end the block (or file, if at top level) by \f(CW\*(C`no utf8;\*(C'\fR.
200.PP
201If you want to automatically upgrade your 8\-bit legacy bytes to \s-1UTF\-8\s0,
202use the encoding pragma instead of this pragma. For example, if
203you want to implicitly upgrade your \s-1ISO\s0 8859\-1 (Latin\-1) bytes to \s-1UTF\-8\s0
204as used in e.g. \f(CW\*(C`chr()\*(C'\fR and \f(CW\*(C`\ex{...}\*(C'\fR, try this:
205.PP
206.Vb 3
207\& use encoding "latin-1";
208\& my $c = chr(0xc4);
209\& my $x = "\ex{c5}";
210.Ve
211.PP
212In case you are wondering: yes, \f(CW\*(C`use encoding 'utf8';\*(C'\fR works much
213the same as \f(CW\*(C`use utf8;\*(C'\fR.
214.Sh "Utility functions"
215.IX Subsection "Utility functions"
216The following functions are defined in the \f(CW\*(C`utf8::\*(C'\fR package by the
217Perl core. You do not need to say \f(CW\*(C`use utf8\*(C'\fR to use these and in fact
218you should not say that unless you really want to have \s-1UTF\-8\s0 source code.
219.ie n .IP "* $num_octets = utf8::upgrade($string)" 4
220.el .IP "* \f(CW$num_octets\fR = utf8::upgrade($string)" 4
221.IX Item "$num_octets = utf8::upgrade($string)"
222Converts in-place the octet sequence in the native encoding
223(Latin\-1 or \s-1EBCDIC\s0) to the equivalent character sequence in \fIUTF-X\fR.
224\&\fI$string\fR already encoded as characters does no harm.
225Returns the number of octets necessary to represent the string as \fIUTF-X\fR.
226Can be used to make sure that the \s-1UTF\-8\s0 flag is on,
227so that \f(CW\*(C`\ew\*(C'\fR or \f(CW\*(C`lc()\*(C'\fR work as Unicode on strings
228containing characters in the range 0x80\-0xFF (on \s-1ASCII\s0 and
229derivatives).
230.Sp
231\&\fBNote that this function does not handle arbitrary encodings.\fR
232Therefore \fIEncode.pm\fR is recommended for the general purposes.
233.Sp
234Affected by the encoding pragma.
235.ie n .IP "* $success = utf8::downgrade($string[, \s-1FAIL_OK\s0])" 4
236.el .IP "* \f(CW$success\fR = utf8::downgrade($string[, \s-1FAIL_OK\s0])" 4
237.IX Item "$success = utf8::downgrade($string[, FAIL_OK])"
238Converts in-place the character sequence in \fIUTF-X\fR
239to the equivalent octet sequence in the native encoding (Latin\-1 or \s-1EBCDIC\s0).
240\&\fI$string\fR already encoded as octets does no harm.
241Returns true on success. On failure dies or, if the value of
242\&\f(CW\*(C`FAIL_OK\*(C'\fR is true, returns false.
243Can be used to make sure that the \s-1UTF\-8\s0 flag is off,
244e.g. when you want to make sure that the \fIsubstr()\fR or \fIlength()\fR function
245works with the usually faster byte algorithm.
246.Sp
247\&\fBNote that this function does not handle arbitrary encodings.\fR
248Therefore \fIEncode.pm\fR is recommended for the general purposes.
249.Sp
250\&\fBNot\fR affected by the encoding pragma.
251.Sp
252\&\fB\s-1NOTE:\s0\fR this function is experimental and may change
253or be removed without notice.
254.IP "* utf8::encode($string)" 4
255.IX Item "utf8::encode($string)"
256Converts in-place the character sequence to the corresponding octet sequence
257in \fIUTF-X\fR. The \s-1UTF\-8\s0 flag is turned off. Returns nothing.
258.Sp
259\&\fBNote that this function does not handle arbitrary encodings.\fR
260Therefore \fIEncode.pm\fR is recommended for the general purposes.
261.IP "* utf8::decode($string)" 4
262.IX Item "utf8::decode($string)"
263Attempts to convert in-place the octet sequence in \fIUTF-X\fR
264to the corresponding character sequence. The \s-1UTF\-8\s0 flag is turned on
265only if the source string contains multiple-byte \fIUTF-X\fR characters.
266If \fI$string\fR is invalid as \fIUTF-X\fR, returns false; otherwise returns true.
267.Sp
268\&\fBNote that this function does not handle arbitrary encodings.\fR
269Therefore \fIEncode.pm\fR is recommended for the general purposes.
270.Sp
271\&\fB\s-1NOTE:\s0\fR this function is experimental and may change
272or be removed without notice.
273.ie n .IP "* $flag = utf8::is_utf8(\s-1STRING\s0)" 4
274.el .IP "* \f(CW$flag\fR = utf8::is_utf8(\s-1STRING\s0)" 4
275.IX Item "$flag = utf8::is_utf8(STRING)"
276(Since Perl 5.8.1) Test whether \s-1STRING\s0 is in \s-1UTF\-8\s0. Functionally
277the same as \fIEncode::is_utf8()\fR.
278.ie n .IP "* $flag = utf8::valid(\s-1STRING\s0)" 4
279.el .IP "* \f(CW$flag\fR = utf8::valid(\s-1STRING\s0)" 4
280.IX Item "$flag = utf8::valid(STRING)"
281[\s-1INTERNAL\s0] Test whether \s-1STRING\s0 is in a consistent state regarding
282\&\s-1UTF\-8\s0. Will return true is well-formed \s-1UTF\-8\s0 and has the \s-1UTF\-8\s0 flag
283on \fBor\fR if string is held as bytes (both these states are 'consistent').
284Main reason for this routine is to allow Perl's testsuite to check
285that operations have left strings in a consistent state. You most
286probably want to use \fIutf8::is_utf8()\fR instead.
287.PP
288\&\f(CW\*(C`utf8::encode\*(C'\fR is like \f(CW\*(C`utf8::upgrade\*(C'\fR, but the \s-1UTF8\s0 flag is
289cleared. See perlunicode for more on the \s-1UTF8\s0 flag and the C \s-1API\s0
290functions \f(CW\*(C`sv_utf8_upgrade\*(C'\fR, \f(CW\*(C`sv_utf8_downgrade\*(C'\fR, \f(CW\*(C`sv_utf8_encode\*(C'\fR,
291and \f(CW\*(C`sv_utf8_decode\*(C'\fR, which are wrapped by the Perl functions
292\&\f(CW\*(C`utf8::upgrade\*(C'\fR, \f(CW\*(C`utf8::downgrade\*(C'\fR, \f(CW\*(C`utf8::encode\*(C'\fR and
293\&\f(CW\*(C`utf8::decode\*(C'\fR. Note that in the Perl 5.8.0 and 5.8.1 implementation
294the functions utf8::is_utf8, utf8::valid, utf8::encode, utf8::decode,
295utf8::upgrade, and utf8::downgrade are always available, without a
296\&\f(CW\*(C`require utf8\*(C'\fR statement\*(-- this may change in future releases.
297.SH "BUGS"
298.IX Header "BUGS"
299One can have Unicode in identifier names, but not in package/class or
300subroutine names. While some limited functionality towards this does
301exist as of Perl 5.8.0, that is more accidental than designed; use of
302Unicode for the said purposes is unsupported.
303.PP
304One reason of this unfinishedness is its (currently) inherent
305unportability: since both package names and subroutine names may need
306to be mapped to file and directory names, the Unicode capability of
307the filesystem becomes important\*(-- and there unfortunately aren't
308portable answers.
309.SH "SEE ALSO"
310.IX Header "SEE ALSO"
311perluniintro, encoding, perlrun, bytes, perlunicode