2010-06-08 2 views
1

Possible en double:
DBD::Oracle and utf8 issueUTF-8 - problème Oracle

Je tournai ma variable NLS_LANG comme 'AMERICAN_AMERICA.AL32UTF8' dans le fichier Perl qui se connecte à Oracle et tente d'insérer les données.

Cependant, lorsque j'insère un enregistrement avec une valeur ayant ce caractère 'ñ', le sql échoue. Mais si j'utilise 'Ñ', c'est très bien.

Qu'est-ce que je fais mal ici?

Informations complémentaires: Si je change NLS_LANG 'AMERICAN_AMERICA.UTF8 Je peux insérer « ñ » très bien ...

+0

double possible de [DBD :: Oracle et numéro UTF8] (http://stackoverflow.com/questions/3016128/dbdoracle-and -utf8-issue) – Ether

Répondre

1

Que fait échouer avec?

Généralement, s'il y a un problème de conversion de caractères, il échoue discrètement (par exemple en enregistrant un caractère avec une traduction inappropriée). Parfois, vous obtenez une erreur qui indique que la colonne n'est pas assez grande. C'est généralement le cas lorsque vous essayez de stocker, par exemple, un caractère qui occupe deux ou trois octets dans une colonne qui n'autorise qu'un seul octet.

La première étape consiste à confirmer les paramètres de base de données

select * from V$NLS_PARAMETERS where parameter like ‘%CHARACTERSET%’; 

vérifier ensuite la composition d'octets des chaînes avec:

select dump('ñ',16), dump('Ñ',16) from dual; 
+0

On dirait que cette question va être fermée en tant que doublon de la nouvelle question [DBD :: Oracle et UTF8 problème] (http://stackoverflow.com/questions/3016128/dbdoracle-and-utf8-issue). Juste au cas où vous êtes intéressé :) –

0

La première requête me donne:

1 NLS_CHARACTERSET AL32UTF8 
2 NLS_NCHAR_CHARACTERSET AL16UTF16 

La deuxième requête me donne:

1 Typ=96 Len=2: c3,b1 Typ=96 Len=2: c3,91 

Mes paramètres exacts db et Perl sont répertoriés dans cette question: https://stackoverflow.com/questions/3016128/dbdoracle-and-utf8-issue

+0

Pourquoi publiez-vous la même question trois fois? – Ether

+0

Parce que je ne reçois aucune réponse et je voulais étendre la description un peu. – goe

+4

S'il vous plaît modifier la question originale, plutôt que de poster à nouveau. Toutes vos questions sont susceptibles d'être fermées et supprimées maintenant. – Ether