Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle a configuré le NLS_LANG par défaut

Voici ce qui se passe probablement :

  • Votre jeu de caractères client doit être quelque chose comme CP1252 ou ISO-8859-15 alors qu'en fait votre client utilise vraiment UTF8.
  • Dans ce jeu de caractères (UTF8), le symbole á prend deux octets, donc votre client envoie ces deux octets, tout en disant à Oracle de les traiter comme CP1252. Dans CP1252, le code à deux octets pour deux caractères qui fait que la DB interprète l'entrée comme deux caractères, donc length('à') vaut 2 (et si vous insérez cette chaîne le résultat de l'insertion n'est pas égal à à )
  • Lorsque vous définissez correctement le jeu de caractères, l'entrée est correctement traitée par oracle comme un seul caractère et sa longueur est de 1 (toujours deux octets).

Conclusion :définissez correctement le jeu de caractères de votre client ou vous obtiendrez des erreurs de traduction (vous n'obtiendrez pas de caractères illégaux de cette façon, mais vous risquez d'obtenir des symboles étranges (¿ ).

Le jeu de caractères de la base de données est défini au moment de la création et est généralement modifié via export/create blank database/import.