In the given export(Normal Export) log file i see following:
Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
Is this multi-byte or single byte database char-set.
Can you please explain me a bit
- What is difference between multi-byte and single byte character set?
- Can we import multibyte into Single byte and vice versa?
- How can we identify weather a character set is multi-byte or single byte by looking into its name?
Please provide any other useful information on this topic?
Best Answer
Ok, this basically means:
AL16UTF16
. This is a multi-byte character set and, being the national character set, would have been used for anyNCHAR
,NVARCHAR
andNCLOB
columns (theN
in the name stands for "national").WE8ISO8859P1
. This is an 8-bit character set (the Western European ISO variant) and would have been used for anyCHAR
,VARCHAR
andCLOB
columns.You can see which character sets are being used by a particular database by querying the
NLS_DATABASE_PARAMETERS
data dictionary view. Your export would have been done from a database with the parameterNLS_CHARACTERSET
set toWE8ISO8859P1
, and theNLS_NCHAR_CHARACTERSET
parameter set toAL16UTF16
.The difference between multi-byte and single-byte character sets is explained in the name. Single-byte characters are stored in a single byte, i.e. 8 bits. Multi-byte characters are stored in one or more (multiple) bytes.
As far as importing multi-byte into single-byte (and vice versa) is concerned, it really depends on the character encodings and whether or not the source character actually exists in the target character set. By way of example, a Japanese multi-byte character is not going to exist in the
US7ASCII
character set, and you'd end up with a database full of?
signs.I strongly suggest you read the Oracle Globalization Support Guide, as this goes into the topic of internationalisation in great detail.