Tout d'abord, vérifiez si votre base de données est capable de stocker des caractères arabes par
SELECT *
from NLS_DATABASE_PARAMETERS
WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
Si vous obtenez des valeurs comme AL32UTF8
, AL16UTF16
ou WE8ISO8859P6
tout va bien et DB est capable de stocker de tels caractères.
Dans SQL Developer, allez dans Outils / Préférences / Environnement / Encodage et sélectionnez UTF-8
.
Définissez une variable d'environnement sur NLS_LANG=ARABIC_AMERICA.AL32UTF8
ou similaire, vous pouvez également faire NLS_LANG=.AL32UTF8
afin de conserver la langue et le territoire par défaut/existants. Vous pouvez également définir est également dans votre registre à HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
(pour 32 bits), resp. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
(pour 64 bits).
Alors ça devrait marcher.
La modification de votre jeu de caractères local (c'est-à-dire NLS_LANG) n'affecte jamais les données existantes dans la base de données.