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