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
  

Mensagemem Qua, 14 Nov 2007 9:26 am

Pessoal estou com um problemas de caracteres especias do UTL_FILE

Para exempleficar vamos ao codigo

Código: Selecionar todos
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:

Código: Selecionar todos
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:
Código: Selecionar todos
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
HenriqueMachado
Localização: Blumenau - SC

Abraços,
Henrique Machado Muller

Mensagemem Qua, 14 Nov 2007 9:48 am

Brother,

Tenta fazer um teste, com os comandos abaixo?
Código: Selecionar todos
SELECT ASCII('ç')
  FROM dual;
 
SELECT CHR(231)
  FROM dual;

qualquer coisa, manda ai.
Trevisolli
Localização: Araraquara - SP

Abraço,

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

Mensagemem Qua, 14 Nov 2007 9:53 am

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: UTL_FILE.GET_LINE_NCHAR
:-o
dr_gori
Localização: Seattle, WA, USA

Thomas F. G

Mensagemem Qua, 14 Nov 2007 10:41 am

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:

SELECT ASCII('ç')
FROM dual;

SELECT CHR(231)
FROM dual;



O resultado foi este.

Código: Selecionar todos
ASCII('�')                   
----------   
50087                                                                                                                               
1 rows selected

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

1 rows selected
HenriqueMachado
Localização: Blumenau - SC

Abraços,
Henrique Machado Muller

Mensagemem Qui, 13 Dez 2007 2:04 pm

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

alguém sabe o que é?
HenriqueMachado
Localização: Blumenau - SC

Abraços,
Henrique Machado Muller

Mensagemem Seg, 27 Abr 2015 6:42 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 é
Código: Selecionar todos
AReg_Linha


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

Código: Selecionar todos
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'));
khalilpereira

Mensagemem Qua, 24 Jan 2018 4:01 pm

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
jime.santos
Localização: São Paulo, Barueri, São Paulo


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem
cron