Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/04/2012, 17:59
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Asp convertir campo Oracle ISO en una asp codificada en UTF-8

Te comento más en detalle como funciona la codificación de caracteres en Oracle, tal vez te ayude a resolver el problema.

A nivel lógico tienes 3 capas: la codificación de la base de datos Oracle, la codificación del cliente de Oracle y la codificación de la aplicación, lo que supone siempre una conversión de los datos cuando viajan entre capas de diferente codificación. y esto ocurre independientemente de que a nivel físico las capas estén en un mismo servidor o en varios.

1. Base de datos Oracle, la codificación se define al momento de crear la base, se puede cambiar a posterior aunque es un proceso limitado y costoso que pocas veces justifica. Esta información la tienes con la consulta:

Código:
select property_value
 from database_properties
 where property_name = 'NLS_CHARACTERSET';
2. Cliente de Oracle, en Windows, la codificación del cliente se define con la clave del registro HKLM\Software\Oracle\<Oracle_Home_Name>\NLS_LANG, y representa el valor por defecto para todas las conexiones que se hagan a la base de datos, ya sean desde ado, ado.net, oci, odbc, jdbc, etc.

3. Aplicación, dependiendo del lenguaje o del sistema operativo, las aplicaciones pueden tener diferentes codificaciones, como el ejemplo de asp y utf8.

En tu caso, la capa aplicación es el IIS con ASP, que utiliza un conjunto de librerías (ej: ado -> oledb -> oci.dll) como capa cliente para conectarse a la base de datos. Si la aplicación es UTF8 y la base de datos es WE8ISO8859P1, lo recomendado es que la conversión la haga el cliente de Oracle configurando la clave NLS_LANG=SPANISH_SPAIN.AL32UTF8.

Saludos