This guide outlines the step-by-step configuration required at the database, operating system, and client registry levels to achieve seamless Arabic and Urdu support. 1. Database Level Configuration
If you are starting a new database for legacy Developer 6i applications, choose AR8MSWIN1256 – it is the character set that most existing “Arabic/Urdu support” walkthroughs assume, and it has been proven to work with Developer 6i’s limitations. If you already have a Unicode database (AL32UTF8) and are encountering display issues, you can still make it work, but expect additional configuration steps.
| Symptom | Most Likely Cause | Solution | |---------|-------------------|----------| | ??? in SQL Plus | Terminal does not support Arabic, or NLS_LANG is wrong | Set NLS_LANG correctly and use a Unicode‑aware terminal (e.g., newer SQL Plus versions) | | Data displays correctly in SQL*Plus but not in Forms | Forms font lacks Arabic/Urdu glyphs, or Forms was compiled with wrong NLS_LANG | Change the form’s font to “Arial,” “Tahoma,” or a Unicode font; recompile with correct NLS_LANG | | Urdu stops working when NLS_LANG = AR8MSWIN1256 | Single‑byte AR8MSWIN1256 does not fully support all Urdu letters | Try client NLS_LANG = AL32UTF8 or UTF8 instead | | RTL layout does not apply in reports | Character‑mode reports require manual .prt file modifications | Edit dflt.prt and add nls locale "arabic" | | Button labels do not localize | Forms 6i limitation | Use image buttons or separate text items as workarounds |
SELECT * FROM nls_database_parameters;
Note: Direct updates to sys.props$ are strongly discouraged by Oracle Support as they can corrupt the database.
Check if byte values correspond to Arabic code points (0xC7, 0xC8 etc. in AR8MSWIN1256).
Oracle Developer 6i applications also read NLS_LANG from the .env file (typically default.env ) located in the Forms or Reports server directory. Add or uncomment the line: If you already have a Unicode database (AL32UTF8)
-- Check character set SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'; Use code with caution. C. NLS_NCHAR_CHARACTERSET
In the tab, click Change system locale . Set the Current System Locale to Arabic (Saudi Arabia) or your target localized Arabic/Urdu region. This configuration handles proper ANSI mapping for non-Unicode legacy software like Developer 6i.
ALTER DATABASE CHARACTER SET AR8MSWIN1256; Check if byte values correspond to Arabic code
NLS_LANG=ARABIC_UNITED ARAB EMIRATES.AR8MSWIN1256
: This indicates an NLS_LANG mismatch. Verify that the database is AL32UTF8 and the client registry is strictly set to AR8MSWIN1256 .
If the database is already created with an incompatible set (like WE8MSWIN1252 ), it is often safest to recreate it or use the INTERNAL_USE command (e.g., ALTER DATABASE CHARACTER SET INTERNAL_USE AR8MSWIN1256; ) after a full backup. 2. Client Registry Settings (Forms & Reports 6i) ALTER DATABASE CHARACTER SET INTERNAL_USE AR8MSWIN1256
Use true-type fonts (TTF) that natively support Arabic and Urdu script shapes. Standard web-safe choices include Arial , Tahoma , or specialized Urdu fonts like Noori Nastaliq (ensure the exact font file is installed on every client machine). 5. Oracle Reports 6i Font Mapping and PDF Generation