Bonjour,
Dans un projet, je suis amené à sélectionner des données dans oracle (serveur distant) et puis les injecter dans une base mysql (serveur local). Dans la base oracle, on a des données en français et en arabe, avec le paramétrage suivant :
NLS_LANGUAGE FRENCH
NLS_TERRITORY FRANCE
NLS_CURRENCY ?
NLS_ISO_CURRENCY FRANCE
NLS_NUMERIC_CHARACTERS ,.
NLS_CHARACTERSET WE8ISO8859P9
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD/MM/YY
NLS_DATE_LANGUAGE FRENCH
NLS_SORT FRENCH
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY ?
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 9.2.0.4.0
Dans la machine locale, quand j'utilise UTF8, les caractères accentués s'affichent correctement, contrairement au caractères arabes (ÏÈáæã). J'ai aussi testé AMERICAN_AMERICA.WE8ISO8859P9, alors là toutes les données s'affichent correctement dans le navigateur (modulo le changement d'encodage en windows-1256). Par contre, lorsque je lance l'enregistrement de ces données dans mysql, je reçois cette erreur :
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF4me EN...' for column 'lic_dip' at row 1
ça fait maintenant une semaine que je m'arrache les cheveux avec ce problème de conversion. Merci à toute personne pouvant m'éclairer sur ce problème.
Partager