Oracle National Character Set and Character Set

Character set specifies the method database uses to encode data. In an Oracle database, when a column is defined as VARCHAR2, each character in that column is stored in a byte (8 bits).

When a column is defined as NVARCHAR2, each character in that column are stored in multibyte, ie, each character takes more than one byte to store a single character.

There is no influence of character set in the way numbers are stored.

NLS_NCHAR_CHARACTERSET

It is used for multibyte datatypes like NCHAR, NVARCHAR2, NCLOB etc. While creating database using CREATE DATABASE command, we specify this character set using NATIONAL CHARACTER SET clause. It encodes unicode characters in UTF16 (Universal Character Set Transformation Format 16 bit) format.

NLS_CHARCTERSET

This character set is used for datatypes like CHAR, VARCHAR2, CLOB etc. This character set is specified using CHARACTER SET clause while creating database.

National character set is an alternative characterset to store unicode characters.

To find the character set and national character set, use view NLS_DATABASE_PARAMETERS

col parameter for a30
col value for a30
SELECT * 
FROM sys.nls_database_parameters 
WHERE parameter  in ('NLS_NCHAR_CHARACTERSET', 'NLS_CHARACTERSET');
NLS_NCHAR_CHARACTERSET
represents national character set
NLS_CHARACTERSET
represents character set

Following are all the available Oracle's 8 bit encoding format

Following are all the Oracle's 16 bit encoding format

Following are all the available Oracle's 32 bit encoding format

What are all the popular languages that cannot be encoded in 16 bit?

Does character set affect the way numbers are encoded or there is only one way to encode numbers?

Comments