Oracle Database 10g Developer 6i Settings For Arabic Urdu Support Work May 2026
Set the following at database, session, or application level:
ALTER SESSION SET NLS_LANGUAGE = 'ARABIC';
ALTER SESSION SET NLS_TERRITORY = 'EGYPT'; -- or 'SAUDI ARABIA', 'UAE'
ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY';
ALTER SESSION SET NLS_DATE_LANGUAGE = 'ARABIC';
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';
ALTER SESSION SET NLS_SORT = 'ARABIC';
ALTER SESSION SET NLS_COMP = 'LINGUISTIC';
For Urdu, use NLS_LANGUAGE = 'URDU' if available (10g may not have full Urdu locale; Arabic locale usually suffices as script is shared).
| 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 the following at database, session, or application
ALTER SYSTEM SET NLS_LANGUAGE = 'ARABIC' SCOPE=SPFILE;
ALTER SYSTEM SET NLS_TERRITORY = 'EGYPT' SCOPE=SPFILE;
ALTER SYSTEM SET NLS_DATE_LANGUAGE = 'ARABIC' SCOPE=SPFILE;
-- Restart DB after changes
This is the most critical step. The Oracle Client (used by Developer 6i) needs to know how to interpret the bytes it receives from the database.
The Setting: For Arabic/Urdu support with Developer 6i, set the value to: For Urdu, use NLS_LANGUAGE = 'URDU' if available
ARABIC_UNITED ARAB EMIRATES.AR8MSWIN1256
Why this specific string?
Developer 6i is a 32-bit application from the Windows 98/2000 era. It does not automatically support UTF8 on the front-end. You must force it.
Set these in the Form Property Palette:
| Property | Value |
|---|---|
| NLS_LANG | ARABIC_EGYPT.AR8MSWIN1256 |
| NLS_DATE_FORMAT | DD/MM/YYYY (or Arabic-enabled format) |
| NLS_SORT | ARABIC |
| NLS_COMP | LINGUISTIC |
Even with configuration, your PL/SQL code inside Developer 6i must handle RTL and bidirectional text. This is the most critical step