REGEXP_REPLACE - caracteres codificados HTML

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Boa tarde,

Estou recebendo dados de um webservice codificados conforme abaixo:

Selecionar tudo

AÇÃO EM NÚMERO INCONTROLÁVEL
(AÇÃO EM NÚMERO INCONTROLÁVEL)
Esses símbolos são representações de caracteres acentuados em HTML. Têm uma estrutura bem definida ("&#<numero>;", onde <numero> é o código ASCII do caracter).

Há alguma forma de eu fazer a substituição pelos caracteres normais usando REGEXP_REPLACE?

O mais perto de conseguir foi:

Selecionar tudo

REGEXP_REPLACE (TEXTO, '&#([0-9]+);', '\1');
Porém não consigo pegar o resultado e converter para ASCII.
spernega
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 228
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Marciel,

Você já tentou usar o translate?

Este exemplo é o que eu uso para tirar acentuação para a NFe.

Selecionar tudo

Select translate( campo,'ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜ''á"çéíóúàèìòùâêîôûãõëü¿§¦¹²³£¢¬ªº°¨½¼¾Æ',
                        'ACEIOUAEIOUAEIOUAOEU a ceiouaeiouaeiouaoeu                 ')
from   dual;
Com base no endereço que você postou anteriormente, você poderia montar um específico.

Selecionar tudo

ÁáÂâÀàÅåÃãÄäÆæÉéÊêÈèËëÐðÍíÎîÌìÏïÓóÔôÒòØøÕõÖöÚúÛûÙùÜüÇçÑñ<>&"®©ÝýÞþß
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Translate só funciona para caracteres. Não funciona para strings. Por exemplo, substitui Á por A mas não substitui #1 por 1.
spernega
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 228
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

e se você aplicar depois do REGEXP_REPLACE?
No resultado do REGEXP_REPLACE ...
spernega
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 228
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Boa tarde Marciel,

Agora sou eu quem precisou fazer isso...

Acabei criando uma tabela DE/PARA e uma função para a tradução.

Se você ainda não resolveu, segue o que eu fiz.

Cadastrei só algumas coisas na tabela, mas tem bastante de/para nesta página:

http://erikasarti.net/html/acentuacao-c ... especiais/
Anexos
traducao.txt
tradução HTML
(2.44 KiB) Baixado 374 vezes
Responder
  • Informação