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.


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.


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
FROM sys.nls_database_parameters 
represents national character set
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?