1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
|
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (C) Markus Kuhn, 1996
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
.\" USA.
.\"
.\" 1995-11-26 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" First version written
.\"
.TH UTF-8 7 "1995-11-26" "Linux" "Linux Programmer's Manual"
.SH NV
UTF-8 \- ASCII kompatbilis tbb bjtos Unicode kdols
.SH LERS
Az
.B Unicode
karakterkszlet 16 bites kdteret foglal el. A legkzenfekvbb
Unicode kdols (az
.BR UCS-2 )
16 bites szavak sorozatbl ll. Az ilyen karakterlncok olyan bjtokat
is tartalmazhatnak egyes 16 bites karakterek rszeknt, mint a '\\0' vagy
a '/', amelyeknek specilis jelentsk van fjlnevekben s klnfle
C knyvtri fggvnyek paramtereiben. Radsul a UNIX-os segdprogramok
tbbsge ASCII fjlokat vr, s nem tudja a 16 bites szavakat karakterknt
feldolgozni jelents mdostsok nlkl. Ezrt az
.B UCS-2
nem megfelel az
.B Unicode
kdolsra fjlnevekben, szvegfjlokban, krnyezeti vltozkban,
stb. Az
.BR "ISO 10646 Universal Character Set (UCS)" ,
amely tartalmazza rszhalmazknt az Unicode-ot, mr 31 bites
kdtren helyezkedik el, s a kzenfekv
.B UCS-4
kdols (32 bites szavak sorozata) erre a karakterkszletre ugyanezeket
a problmkat veti fel.
Az
.B Unicode
s az
.B UCS UTF-8
tpus kdolsa mentes ezektl a problmktl, ezrt ez a kvetend t a
.B Unicode
karakterkszlet hasznlatra a Unix-szer opercis rendszerek alatt.
.SH TULAJDONSGOK
Az
.B UTF-8
kdols a kvetkez j tulajdonsgokkal rendelkezik:
.TP 0.2i
*
Az 0x00000000-tl 0x0000007f-ig terjed
.B UCS
karakterek (a klasszikus
.B US-ASCII
karakterek) egyszeren a 0x00-tl 0x7f-ig egy bjton troldnak.
(ASCII kompatibilits.) Ez azt jelenti, hogy ha egy fjlban vagy
karakterlncban csak 7 bites ASCII karakterek fordulnak el, akkor
a kdolsuk
.BR ASCII s UTF-8
alatt azonos lesz.
.TP
*
Minden 0x7f-nl nagyobb kd
.B UCS
karaktert olyan tbb bjtbl ll sorozat kdol, amelyben minden
bjt 0x80 s 0xfd kz esik, teht nem jelenhet meg egy ASCII bjt,
mint egy msik karakter rsze, ezrt nem okozhat problmt pldul
a '\\0' vagy a '/'.
.TP
*
Az
.B UCS-4
karakterlncok bcrendje megmarad.
.TP
*
A 2^31 darab lehetsges kd brmelyike megadhat az
.BR UTF-8 segtsgvel.
.TP
*
A 0xfe s 0xff bjtokat nem hasznlja az
.B UTF-8
kdols.
.TP
*
Egy nem-ASCII
.B UCS
karaktert reprezentl tbb bjtos sorozat els bjtja mindig 0xc0 s 0xfd
kz esik, s egyben megadja, hogy milyen hossz a tbb bjtos sorozat.
Az ezt kvet bjtok valamennyien a 0x80-tl 0xbf-ig terjed tartomnyba esnek.
Ez lehetv teszi az jraszinkronizlst, s a kdolst ellenllv teszi a
hinyz bjtokkal szemben.
.TP
*
Az
.B UTF-8
kdols
.B UCS
karakterek akr hat bjlt hosszak is lehetnek, de a
.B Unicode
karakterek csak legfeljebb hrom bjt hosszak. Mivel a Linux
csak a 16 bites
.B Unicode
rszhalmazt hasznlja az
.BR UCS -nek,
ezrt Linux alatt az
.B UTF-8
tbb bjtos sorozatok csak egy, kt vagy hrom bjt hosszak lehetnek.
.SH KDOLS
A kvetkez bjtsorozatok reprezentlnak egy karaktert. A
hasznland sorozat fgg a karakter UCS kdjtl.
.TP 0.4i
0x00000000 - 0x0000007F:
.RI 0 xxxxxxx
.TP
0x00000080 - 0x000007FF:
.RI 110 xxxxx
.RI 10 xxxxxx
.TP
0x00000800 - 0x0000FFFF:
.RI 1110 xxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.TP
0x00010000 - 0x001FFFFF:
.RI 11110 xxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.TP
0x00200000 - 0x03FFFFFF:
.RI 111110 xx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.TP
0x04000000 - 0x7FFFFFFF:
.RI 1111110 x
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.RI 10 xxxxxx
.PP
Az
.I xxx
bitpozcikat azokkal a bitekkel kell feltlteni, amelyek a karakter
kdjt alkotjk kettes szmrendszerbeli reprezentciban. Csak a
legrvidebb tbb bjtos reprezentcit szabad hasznlni a tbb
lehetsges varici kzl.
.SH PLDK
A
.BR Unicode -os
0xa9 = 1010 1001 karakter (a copyright jel) UTF-8-as kdolsa:
.PP
.RS
11000010 10101001 = 0xc2 0xa9
.RE
.PP
A 0x2260 = 0010 0010 0110 0000 karakter (a "nem egyenl" szimblum)
kdolsa:
.PP
.RS
11100010 10001001 10100000 = 0xe2 0x89 0xa0
.RE
.SH BIZTONSG
Az Unicode specifikci megkveteli, hogy az UTF-8 kdokat ellltk
a legrvidebb lehetsges formt vlasszk, pldul egy olyan ktbjtos
sorozat, amelynek az els bjtja 0xc0, nem szablyos.
Az Unicode kiadta az UTF-8 Corrigendum cm dokumentumot, amelyben
megtiltja a szabvnyt betart programoknak, hogy elfogadjanak olyan
kdokat, amelyek nem a legrvidebb formjukban rkeznek. Ennek biztonsgi
okai vannak: ha a felhasznl ltal beadott kdsorozatot ellenrzik
a biztonsg rdekben, az ellenrzs valsznleg az "/../", ";" vagy NUL
rtkek ASCII formtumra terjedne csak ki, s esetleg nem gondolnak arra,
hogy szmos ms mdon lehet ezeket a jeleket az UTF-8 kdols segtsgvel
nem ASCII formtumban reprezentlni. Lsd mg az IETF RFC 2279-et.
.PP
Nhny rendszer (amelyek a NUL-t a karakterlnc vgeknt rtelmezik) ennek
ellenre hasznlja a C0 80 kdot a NUL (ASCII 00) karakter bels brzolsra.
.SH SZABVNYOK
ISO 10646, Unicode 1.1, XPG4, Plan 9.
.SH SZERZ
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.SH "LSD MG"
.B unicode(7)
.SH MAGYAR FORDTS
Tmr Andrs <timar_a@freemail.hu>
|