Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia.
Estou tendo problemas com a passagem de parâmetros para uma aplicação de relatórios (no OC4J) que gera arquivos PDF. Quando chamo a URL por algo como http://endereco/?param=grêmio, a palavra "grêmio" é impressa como "gr?mio", ou seja, os caracteres especiais são substituídos por um ponto de interrogação.
No entanto, se eu chamar o relatório utilizando código hexadecimal UTF-8 no lugar dos caracteres especiais, como http://endereco/?param=gr%C3%8Amio, funciona perfeitamente.
Alguém sabe como corrigir isso? Eu chamo o relatório através de uma aplicação feita em PL/SQL, por isso, me ajudaria se existisse alguma função de PL (que eu desconheço) que consiga fazer essa substituição automaticamente.
Grato desde já.
>
Creio que isto seja pela opção de linguagem do Banco.
Mas aqui vai uma function que remove acentos
CREATE OR REPLACE FUNCTION REMOVE_ACENTOS (pValue IN VARCHAR2)
RETURN VARCHAR2 IS
-- Remove Acentos de uma string
--se alterar o paramentro para 0 ira descartar o ponto
ComAcento VARCHAR2(35);
SemAcento VARCHAR2(35);
Saida VARCHAR2(2000); ComAcento := 'àâêôûãõáéíóúçüñÀÂÊÔÛÃÕÁÉÍÓÚÇÜÑ';
SemAcento := 'aaeouaoaeioucunAAEOUAOAEIOUCUN';
Saida := '';
If Length(pValue) > 0 then
For x in 1..Length(pValue)
Loop
if Instr(ComAcento,Substr(pValue,x,1)) > 0 then
Saida := Saida || Substr(SemAcento,(Instr(ComAcento,Substr(pValue,x,1))),1);
else
Saida := Saida || Substr(pValue,x,1);
end if;
End Loop;
End If;
RETURN Saida;Obrigado pela resposta.
Na realidade, imagino que o problema seja configuração do servidor, não do banco. Afinal de contas, para mostrar o parâmetro na tela eu não preciso utilizar o banco.
Sobre a função que passaste, infelizmente não me ajuda pois, além de mostrar o parâmetro na tela, eu também preciso utilizá-lo na consulta e aí tenho diversos caracteres acentuados (e há problemas com outros tipos de caracteres também) vindos do banco.
È a aplicação que monta a URL ?
Qual camada faz isto ?
Pelo que entendi deveria ser montada acentuada e é montada sem, correto ?
>
È a aplicação que monta a URL ?
Qual camada faz isto ?
Pelo que entendi deveria ser montada acentuada e é montada sem, correto ?
Não é bem isso.
Como falei no primeiro post, o que ocorre é que, quando eu chamo o relatório pelo endereço http://endereco?param1=grêmio, o parâmetro "param1" é impresso (no relatório) como "gr?mio", por causa do caracter especial (no caso, a letra e com acento circunflexo). No entanto, se eu chamar o relatório pelo endereço http://endereco?param1=gr%C3%8Amio, o parâmetro é impresso corretamente (%C3%8A é a representação da letra ê na tabela UTF8).
O que eu quero saber é se o Oracle possui algum comando que faça a substituição desses caracteres da forma como eu disse que imprime corretamente, pois o relatório é chamado por um procedimento em PL/SQL. Entendeu?
Obrigado pela ajuda.
Creio que isto seja pela opção de linguagem do Banco.
Mas aqui vai uma function que remove acentos
CREATE OR REPLACE FUNCTION REMOVE_ACENTOS (pValue IN VARCHAR2)
RETURN VARCHAR2 IS
-- Remove Acentos de uma string
--se alterar o paramentro para 0 ira descartar o ponto
BEGIN
END; -- Function REMOVE_ACENTO
/