sql >> Base de Datos >  >> RDS >> Oracle

Oracle configuró NLS_LANG predeterminado

Esto es lo que probablemente sucede:

  • El conjunto de caracteres de su cliente debe ser algo así como CP1252 o ISO-8859-15, mientras que, de hecho, su cliente realmente usa UTF8.
  • En este conjunto de caracteres (UTF8), el símbolo á toma dos bytes, por lo que su cliente envía estos dos bytes, mientras le dice a Oracle que los trate como CP1252. En CP1252, los dos bytes codifican dos caracteres, lo que hace que la base de datos interprete la entrada como dos caracteres, por lo tanto, length('à') es igual a 2 (y si inserta esta cadena, el resultado de la inserción no es igual a à )
  • Cuando configura correctamente el conjunto de caracteres, Oracle trata correctamente la entrada como un solo carácter, y su longitud es 1 (todavía dos bytes).

Conclusión:configure correctamente el conjunto de caracteres de su cliente o obtendrá errores de traducción (no obtendrá caracteres ilegales de esta manera, pero puede obtener símbolos extraños (¿ ).

El conjunto de caracteres de la base de datos se establece en el momento de la creación y, por lo general, se cambia a través de exportar/crear base de datos en blanco/importar.