Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problema con caracteres especiales

Estas en el tema de Problema con caracteres especiales en el foro de Oracle en Foros del Web. Estimados. Acudo a los sabios del tema para ayudarme a ver por donde se le puede dar solucion al siguiente problema. Resulta lo siguiente, cuando ...
  #1 (permalink)  
Antiguo 02/03/2011, 05:55
Avatar de titocba  
Fecha de Ingreso: agosto-2008
Ubicación: Cordoba
Mensajes: 256
Antigüedad: 15 años, 8 meses
Puntos: 4
Problema con caracteres especiales

Estimados.
Acudo a los sabios del tema para ayudarme a ver por donde se le puede dar solucion al siguiente problema.
Resulta lo siguiente, cuando realizo un insert de este tipo en mi base de datos

insert into test(camboTest) values('áéí')

me inserta en la base de datos ??? un signo por cada caracter que contenga un acento o sea una ñ

Ahora bien este problema por lo que tengo entendido es por el idioma de la base de datos, yo a este problema lo solucionaba creando una variable de entorno en la maquina cliente y el problema se me solucionaba.
Ahora el problema es que la maquina cliente no puede ser tocada y necesito darle solucion al problema, eh probado lo siguiente haciendo un procedure a modo test de cambiar el idioma en tiempo de ejecucion, consigo cambiar el idioma pero el problema de los caracteres persiste.



DECLARE
idioma VARCHAR2 (40);
BEGIN
SELECT VALUE
INTO idioma
FROM nls_session_parameters
WHERE parameter = 'NLS_LANGUAGE';

INSERT INTO test
(campoTest
)
VALUES (idioma || 'áéíóúñ'
);

COMMIT;

EXECUTE IMMEDIATE 'ALTER SESSION set NLS_LANGUAGE = "SPANISH" ';

EXECUTE IMMEDIATE 'ALTER SESSION set NLS_TERRITORY = "SPAIN"';

EXECUTE IMMEDIATE 'ALTER SESSION set NLS_CURRENCY = "¿" ';

EXECUTE IMMEDIATE 'ALTER SESSION set NLS_ISO_CURRENCY = "SPAIN" ';

EXECUTE IMMEDIATE 'ALTER SESSION set NLS_DATE_LANGUAGE = "SPANISH" ';

EXECUTE IMMEDIATE 'ALTER SESSION set NLS_SORT = "SPANISH"';

SELECT VALUE
INTO lengua
FROM nls_session_parameters
WHERE parameter = 'NLS_LANGUAGE';

INSERT INTO test
(campoTest
)
VALUES (idioma || 'áéíóúñ '
);

COMMIT;
END prueba1;
[/CODE]

Si bien me cambia el idioma en tiempo de ejecucion el problema al insertar persiste

AMERICAN Lengua Original: ??????
SPANISH Lengua Alterada: ??????



Alguna alternativa de solucion, ya sea desde un procedure o desde Java, saben como atacar este problema.

Gracias desde ya
  #2 (permalink)  
Antiguo 04/03/2011, 07:10
 
Fecha de Ingreso: abril-2008
Mensajes: 93
Antigüedad: 16 años
Puntos: 10
Respuesta: Problema con caracteres especiales

Puede ser que el problema lo tengas al visualizarlo y en la BBDD esté bien.
¿Podrias poner el contenido de las vistas NLS_SESSION_PARAMETERS, NLS_INSTANCE_PARAMETERS y NLS_DATABASE_PARAMETERS?
  #3 (permalink)  
Antiguo 09/03/2011, 13:40
Avatar de titocba  
Fecha de Ingreso: agosto-2008
Ubicación: Cordoba
Mensajes: 256
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Problema con caracteres especiales

No amigo el problema esta siempre al insertar y al consultar y el problema es de idioma.
Se me presento la posibilidad de crear la variable de entorno en Linux, la creo haciendo

export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

la variable se setea pero me sigue insertando caracteres especiales.


Alguna ayuda por favor

Cuando hago esto de crear la variable de entorno en mi maquina local(Windows) mi problema se soluciona, pero no asi en el entorno del server en linux

Etiquetas: caracteres, especiales
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:31.