Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

We are installing ordering a configured oracle database and they are asking us what character encoding we would like to have. The application (in Java) is in English only but users are from different parts of the world.

Are there any motivations for NOT using UTF8 or other unicode character set?

share|improve this question
up vote 6 down vote accepted

You should have two choices to make :

  1. Choose your database character set (used by VARCHAR2, CHAR, CLOB datatypes).
  2. Choose your national character set (used by NVARCHAR2, NCHAR, NCLOB datatypes).

As seen here :

Oracle recommends using Unicode for all new system deployments.

National character sets can only be Unicode : UTF-8 or UTF-16. So choosing the same character set for both would be redundant...

My advice (you say your application is in English only) :

  • Ask for your database character set to be UTF-8.
  • Ask for your national character set to be UTF-16.

And here is my general advice for your schema definition. Table by table, column by column (I take the VARCHAR2/NVARCHAR2 sample here) :

  • if your column could contain any character in the world (as in user input), make it NVARCHAR2.
  • if you have control about what is going to be stored (English then), make it VARCHAR2.
share|improve this answer
I'll add more links as soon as I can get access to the Oracle docs (site is down for now). – Mac Oct 9 '09 at 15:10
Oracle site is up, and reading the documentation made me slightly change my answer... – Mac Oct 12 '09 at 10:08

But watch out :

Do not use the character set named UTF8 as the database character set unless required for compatibility with Oracle Database clients and servers in version 8.1.7 and earlier, or unless explicitly requested by your application vendor. Despite having a very similar name, UTF8 is not a proper implementation of the Unicode encoding UTF-8. If the UTF8 character set is used where UTF-8 processing is expected, data loss and security issues may occur. This is especially true for Web related data, such as XML and URL addresses.

Oracle recommends AL32UTF8 as the database character set. AL32UTF8 is Oracle's name for the UTF-8 encoding of the Unicode standard.

share|improve this answer
+1, good points – DCookie Oct 12 '09 at 22:40
Thank you very much.. fortunatly AL32UTF8 was what they proposed.. :-) – user22463 Oct 13 '09 at 12:47

Are there any motivations for NOT using UTF8 or other unicode character set?

Just the one; you have an existing dataset of which you can't guarantee the current charset encoding.

In which case you probably want to remedy that and still use UTF8.

share|improve this answer

No, not at all.

share|improve this answer

Half-a joke: Yes, you can't connect anymore with old clients that don't know UTF.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.