字符集 AL32UTF8 和 UTF8

The difference between UTF8 and AL32UTF8 are: ITPUB个人空间E(K |?A] a0S4}_

)I1{6X+pd#X0UTF8 stores Unicode characters with code points > U+FFFF as two surrogate characters, three bytes each
S2|*ea/QD&f%O0ITPUB个人空间9_4]mXU.y%B
AL32UTF8 stores Unicode characters with code points > U+FFFF as one four-byte character ITPUB个人空间3n:i,ue4m2Ehw$b

@A4x BO}!nzHd7wI0

UTF8 will not be updated anymore when new Unicode versions are released, only AL32UTF8 and AL16UTF16 will.
8O[j(AW\DJ`7K0ITPUB个人空间v'l%]j0l:sM
Due to compatibility problems with pre-9i versions use UTF8 if you have Oracle8i clients connecting to the database. Use AL32UTF8 in pure Oracle9i environment. ITPUB个人空间/{"`E)m%e(Q\-v
ITPUB个人空间|~w_Kf,k
UTF-8 encoding is variable-width. In UTF-8, each character can be represented by either one, two, or three bytes.
E[-r]M3z0
I*g1ra1LuIb5H0UTF8 is a varying width 1-3 bytes per character Unicode encoding. It is supported for both database and national character sets. It is a binary superset of US7ASCII. UTF8 corresponds to Unicode CESU-8 encoding. ITPUB个人空间Cx J*_gt{v"e
ITPUB个人空间6q6yB(u4z
AL32UTF8 is a varying width 1-4 bytes per character. It is supported for CHAR, VARCHAR2, LONG and CLOB only (database character set). It is a binary superset of UTF8 (in 9.2 only) and US7ASCII. AL32UTF8 corresponds to Unicode UTF-8 encoding.

This is what Metalink says. In Note: 237593.1 ITPUB个人空间 Q(Gv}8DD'iC I
ITPUB个人空间oM{~ l }W
There is a possible problem for 817 and lower versions: Problems connecting to AL32UTF8 databases from older versions 8i and lower.ITPUB个人空间7kr3Q(R4P&iM
ITPUB个人空间ZSo\X+}-P1O
The default UTF8 characterset for 9i/10G is AL32UTF8, however this characterset is NOT recognised by any pre-9i clients/server systems.
s8q%Q:_~ q p0ITPUB个人空间`R9LgYm]
Oracle recommends that you use UTF8 instead of AL32UTF8 as database characterset if you have 8i (or older) servers and clients connecting to the 9i/10g system until you can upgrade the older versions.ITPUB个人空间q YG1v;Xvj

(i&VAEXO0UTF8 is unicode revision 3.0 in 8.1.7 and up. AL32UTF8 is Unicode 3.0 in 9.0.1, Unicode 3.1 in 9.2, Unicode 3.2 in 10.1 and Unicode 4.01 in 10.2ITPUB个人空间-Xvh*Ff%H
ITPUB个人空间,z(t+o3Br&yZI
Besides the difference in Unicode version the "big difference" is that AL32UTF8 has build in support for "Surrogate Pairs" (also known as Surrogate characters or "Supplementary characters").
R[D)OS ]0v0Practically this means that in 99% of the cases you can use UTF8 instead of AL32UTF8 without any problem.
OL3Bc%cUs }W _@0
L1l0C6W"IV l|0There are only a few situations where Surrogate Pairs are already used on client side. Windows system with HKSCS2001 (hong kong extension) is one of those. Note that you actually can *store* Surrogate Pairs in UTF8 but will store 2 * 3 byte characters and not like AL32UTF8 one 4 byte character.
c`6h'D6o p0
#}*d5tv"y|e0Note that if you now use UTF8 as database characterset and -in the future you do a roll out of new 9i or higher clients and all your other databases are upgraded to 9i or higher, you can simply do a alter database characterset to go from UTF8 to AL32UTF8 so downtime will be limited to a few minutes if the need to go to AL32UTF8 should arise. There is no performance impact on staying on UTF8
(NamUWHZ0
,U$Cu\xE0NOTE:
5r$b^X1YQ0This note is ONLY relevant if you have already a 9i AL32UTF8 database with data in. If you still need to create the 9i system then choose UTF8 instead of AL32UTF8 as database characterset in the database creation assistant.
1lQx1l] Nmo0
9l#cF NZ \ydX0So, *IF* you have already a 9i system running with AL32UTF8 then you can use the following steps in this note to change the database characterset to UTF8 without losing data.ITPUB个人空间9yv%g#X7I!U _
ITPUB个人空间 E/X*F"wsdHj Q"I&a
You can't simply use "ALTER DATABASE CHARACTERSET" to go from AL32UTF8 to UTF8 because UTF8 is a SUB-set of AL32UTF8 (some codepoints which are correct in AL32UTF8 are not known in UTF8)
$]!sljACf vV0ITPUB个人空间3p8V0J,`'U:[9n|/\
But again, UTF8 *contains* all characters know in AL32UTF8, the difference between them is pure the way some characters are stored (AL32UTF8 is a bit more efficient for some characters)ITPUB个人空间XL9Vntq,|wj
ITPUB个人空间H?[ht5NgY
So you will run into ORA-12712 if you try alter database.....

 

source:http://space.itpub.net/160455/viewspace-499942

你可能感兴趣的:(职场,和,字符集,utf8,休闲,AL32UTF8)