If you are reading this, you are likely wrestling with a specific, somewhat legacy challenge: getting a system running Oracle Database 10g on the backend and Oracle Developer 6i (Forms & Reports) on the frontend to play nice with Arabic or Urdu data.
It is a common scenario in many established enterprises. Developer 6i is a robust tool that refuses to die, but it was built in an era where Unicode support wasn't the standard default. Getting your forms to display Right-to-Left (RTL) text correctly—and ensuring that data stored in the database is retrievable without turning into "gibberish"—requires a specific set of configurations.
In this guide, we will walk through the essential settings to achieve seamless bi-directional (Bi-Di) support.
Set on DB server (not strictly required for client, but helpful for SQL*Plus):
NLS_LANG=ARABIC_UNITED ARAB EMIRATES.AR8MSWIN1256
NLS_DATE_FORMAT=DD-MON-YYYY
| Symptom | Cause | Solution |
| :--- | :--- | :--- |
| Data saved as "????" | Client NLS_LANG does not match the OS code page or Database cannot accept characters. | Verify Database character set is AL32UTF8. Ensure Client NLS_LANG is AR8MSWIN1256. |
| Text displays Left-to-Right | Item Reading Order property is incorrect. | In Forms Builder, set Item Property: Reading Order = Right to Left. |
| Characters are disjointed | Font does not support complex script shaping (common in Urdu). | Use standard Windows fonts like Arial or Traditional Arabic. Avoid generic system fonts. |
| Runtime error FRF-#### | PATH environment variable conflicts. | Ensure the Oracle Home bin directory appears first in the System PATH variable. |
Set these before launching Developer 6i tools:
SET NLS_LANG=ARABIC_EGYPT.AR8MSWIN1256
SET NLS_DATE_FORMAT=DD/MM/YYYY
SET NLS_SORT=ARABIC
SET LANG=ar_EG
For Urdu (if supported on OS):
SET LANG=ur_PK
SET NLS_LANG=ARABIC_PAKISTAN.AR8MSWIN1256
Windows must have proper Arabic/Urdu fonts. Install:
If your existing database uses AR8MSWIN1256 (no Urdu support):
Do NOT use ALTER DATABASE CHARACTER SET for moving to UTF8 from a non-UTF8 superset – it will permanently corrupt Urdu data.
If you are reading this, you are likely wrestling with a specific, somewhat legacy challenge: getting a system running Oracle Database 10g on the backend and Oracle Developer 6i (Forms & Reports) on the frontend to play nice with Arabic or Urdu data.
It is a common scenario in many established enterprises. Developer 6i is a robust tool that refuses to die, but it was built in an era where Unicode support wasn't the standard default. Getting your forms to display Right-to-Left (RTL) text correctly—and ensuring that data stored in the database is retrievable without turning into "gibberish"—requires a specific set of configurations.
In this guide, we will walk through the essential settings to achieve seamless bi-directional (Bi-Di) support.
Set on DB server (not strictly required for client, but helpful for SQL*Plus):
NLS_LANG=ARABIC_UNITED ARAB EMIRATES.AR8MSWIN1256
NLS_DATE_FORMAT=DD-MON-YYYY
| Symptom | Cause | Solution |
| :--- | :--- | :--- |
| Data saved as "????" | Client NLS_LANG does not match the OS code page or Database cannot accept characters. | Verify Database character set is AL32UTF8. Ensure Client NLS_LANG is AR8MSWIN1256. |
| Text displays Left-to-Right | Item Reading Order property is incorrect. | In Forms Builder, set Item Property: Reading Order = Right to Left. |
| Characters are disjointed | Font does not support complex script shaping (common in Urdu). | Use standard Windows fonts like Arial or Traditional Arabic. Avoid generic system fonts. |
| Runtime error FRF-#### | PATH environment variable conflicts. | Ensure the Oracle Home bin directory appears first in the System PATH variable. |
Set these before launching Developer 6i tools:
SET NLS_LANG=ARABIC_EGYPT.AR8MSWIN1256
SET NLS_DATE_FORMAT=DD/MM/YYYY
SET NLS_SORT=ARABIC
SET LANG=ar_EG
For Urdu (if supported on OS):
SET LANG=ur_PK
SET NLS_LANG=ARABIC_PAKISTAN.AR8MSWIN1256
Windows must have proper Arabic/Urdu fonts. Install:
If your existing database uses AR8MSWIN1256 (no Urdu support):
Do NOT use ALTER DATABASE CHARACTER SET for moving to UTF8 from a non-UTF8 superset – it will permanently corrupt Urdu data.