UTL_FILE.LINE problema com caracteres especiais (Acentos)

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
HenriqueMachado
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Seg, 29 Mai 2006 1:24 pm
Localização: Blumenau - SC
Abraços,
Henrique Machado Muller

Pessoal estou com um problemas de caracteres especias do UTL_FILE

Para exempleficar vamos ao codigo

Selecionar tudo

DECLARE 
    arquivo_ler UTL_FILE.File_Type; 
    AReg_Linha VARCHAR2(4000); 
BEGIN 
    DBMS_OUTPUT.ENABLE(100000); 
    DBMS_OUTPUT.PUT_LINE('ok'); 
    arquivo_ler := UTL_FILE.FOPEN_NCHAR('DIR', '001662.TXT', 'r');    
    UTL_FILE.GET_LINE(arquivo_ler, AReg_Linha); 
END; 


Obtem o resultado
Código:

Selecionar tudo

0;253610672;200706;ASSOCIA�O DOS FISSURADOS DO VALE DO ITAJA�1;2;3;1;1;1;2;2;3;2;1;5 


Mais a linha original do arquivo é
Código:

Selecionar tudo

0;253610672;200706;ASSOCIAÇÃO DOS FISSURADOS DO VALE DO ITAJAÍ;1;2;3;1;1;1;2;2;3;2;1;5 
alguém poderia me ajudar? Não sei o que fazer
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Tenta fazer um teste, com os comandos abaixo?

Selecionar tudo

SELECT ASCII('ç') 
  FROM dual;
  
SELECT CHR(231) 
  FROM dual;
qualquer coisa, manda ai.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acho que o problema é o seguinte:
Você abriu o arquivo no formato UNICODE (UTL_FILE.FOPEN_NCHAR)
E usou o GET_LINE normal!

Tente usar:

Selecionar tudo

UTL_FILE.GET_LINE_NCHAR
:-o
HenriqueMachado
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Seg, 29 Mai 2006 1:24 pm
Localização: Blumenau - SC
Abraços,
Henrique Machado Muller

Obrigado pelas resposta.
Mas ainda não obtive sucesso.

Tentei mudas o comandos retirando o NCHAR e colocando NCHAR em tudo, o resultado foi o mesmo da primeira mensagen.
Brother,

Tenta fazer um teste, com os comandos abaixo?
Código:

Selecionar tudo

SELECT ASCII('ç') 
  FROM dual; 
  
SELECT CHR(231) 
  FROM dual; 
O resultado foi este.

Selecionar tudo

ASCII('�')                    
----------    
50087                                                                                                                                
1 rows selected

CHR(231)                             
--------                     

1 rows selected
HenriqueMachado
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Seg, 29 Mai 2006 1:24 pm
Localização: Blumenau - SC
Abraços,
Henrique Machado Muller

Ainda não consegui achar a solução.

alguém sabe o que é?
khalilpereira
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 13 Abr 2015 3:24 pm

Apesar de ser um tópico antigo vale a pena responde-ló porque o Google tem como primeira ocorrência das palavras-chave desse problema esse tópico.

Consegui achar a solução que deu certo para o meu caso.

Considerando que a variável que recebe a linha do arquivo é

Selecionar tudo

AReg_Linha
Para converter a linha do arquivo que deve ser UTF8 para o formato do Banco de Dados que deve ser WE8MSWIN1252.

Selecionar tudo

AReg_Linha:=utl_raw.cast_to_varchar2(utl_raw.CONVERT(utl_raw.cast_to_raw(AReg_Linha),'BRAZILIAN PORTUGUESE_BRAZIL.WE8MSWIN1252', 'BRAZILIAN PORTUGUESE_BRAZIL.UTF8'));
Avatar do usuário
jime.santos
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 27 Jul 2017 10:47 am
Localização: São Paulo, Barueri, São Paulo
Contato:

Fica uma Dica para resolver acentuação no PLSQL

PL/SQL Developer Version 12.0.7.1837

https://srcoelho.com.br/2012/08/14/acen ... developer/

Problema: PL/SQL Developer troca qualquer caractere acentuado pelo simbolo ” ? “.

Solução: No windows, crie uma variável de ambiente chamada NLS_LANG, com o valor .WE8ISO8859P1. Conforme figura abaixo.

Abraço


:-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Bing [Bot], Google [Bot] e 16 visitantes