Monthly Archives: July 2014

SQL Developer oddity on Windows

Recently, I have come across a bit of a strange behaviour in SQL Developer when verifying the correctness of the data entered into a database from various clients (Linux / Windows / Solaris) -> think of client characterset in NLS_LANG.
In various MOS notes Oracle propagates the use of SQL Developer as a “known good client” to check data in the database, e.g. 1628060.1.
The one thing that struck me was when SQL Deloper displayed a right single quotation mark instead of a blank square symbol “[]” (representing a non-printable character).

Before we go to the test case I need to clarify a few points:

  • Databases tested 11.2.0.3 and 11.2.0.4
  • All databases running AL32UTF8 database character set
  • All databases running AL16UTF16 national character set
  • SQL Developer version tested: 4.0.2.15

Now, let’s look what happens if I run following query:

select unistr('\0092') char_display, dump(unistr('\0092'), 16) char_dump from dual;

Result on Linux:

linux_sqldev

Result on Windows:

windows_sqldev

Basically, I’m asking the system to display Unicode code point U+0092 which is a private control character and is not associated with a printable symbol.
In my opinion the Linux version is returning the right result while the one on Windows clearly does some code page conversion.
So, if you’re running SQL Developer on Windows it might no longer be a “known good client” as for sure the result as shown is unexpected.