› Fóruns › SQL e PL/SQL › Texto com caracter especial › Responder a: Texto com caracter especial
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;