Pular para o conteúdo

Fóruns SQL e PL/SQL Texto com caracter especial Responder a: Texto com caracter especial

#154730
Avatar photoJosé Laurindo Chiappa
Moderador

    Blz : Então, vamos lá : PRIMEIRO, não só na Internet mas TAMBÉM em editores de texto rich-format (tipo MS-Word), em planilhas Excel e em MUITAS fontes/programas, SIM, o que está lá Não É um texto puro, pode ter SIM caracteres de controle, pode ter SIM formatação (tipo negrito/cores/tamanho de letra), com CERTEZA se neguim sair copiando de um lugar direto pra outro E não se atentar à isso, vai SIM ter “Sujeira”no meio do texto, o que PODE tanto ir de caracteres de controle invisíveis (como parece ser esse seu) Até informação de formatação de texto, caracteres em línguas orientais que o characterset do banco e/ou a tool de front-end não sabem exibir, sim….

    Muito bem : primeiro, para vc poder ver EXATAMENTE quais códigos de caracteres estão gravados numa string Oracle, vc pode pedir a função DUMP, que serve pra isso : antes de exemplificar, dei-xe AVisar que num database Oracle, a CODIFICAÇÃO DAS STRINGs (sejam datatypes CHAR ou VARCHAR/VARCHAR2) é PADRONIZADA a nível de database, quando vc cria um database vc ESCOLHER o Characterset dele, e TODAS AS STRINGS vão ser codificadas/armazenadas com ESSE characterset, assim se eventualmente vc tiver algum caracter imprimível mas que não apareça ou apareça com ponto de interrogação ou coisa do tipo, vc SABE que é impedância entre o characterset do banco E a codificação da string….
    O SEGUNDO ponto, que vc Não Diz Claramente mas pelo jeito acho que É o caso, o caracter não-exibível que normalmente aparece em texto HTML como   é o caracter UNICODE No-Break Space (NBSP), mostrado em https://www.compart.com/en/unicode/U+00A0

    Muito bem, vamos fazer um teste com caracteres UNICODE visíveis e não-visíveis pra simular a sua situação e exemplificar primeiro a função DUMP :

    create table TAB_TEST_UNICODE (c1 number, c2 varchar2(100));
    insert into TAB_TEST_UNICODE values (1, unistr(‘Some text\00A0 continues’) );
    insert into TAB_TEST_UNICODE values (2, UNISTR(‘abc\00e5\00A0\00f6’) );
    commit;