Logo Hardware.com.br
Entre-Trópicos
Entre-Trópic... Zumbi Registrado
4.5K Mensagens 912 Curtidas

Unicode ou AnsiString.

#1 Por Entre-Trópic... 20/04/2014 - 09:10
Comecei a usar o Embarcadero('antigo' Borland Delphi/C++) aí ele 'pede' para usar o UnicodeString, estou usando para ler o arquivo html de loteria da Caixa Econômica, a utulização fica natural ou tenho que ter cuidado/conversão ao ler arquivos não unicode?
ripongao
ripongao Veterano Registrado
755 Mensagens 94 Curtidas
#2 Por ripongao
21/04/2014 - 10:15
que eu saiba tem de ter cuidado na leitura de arquivos não unicode, digo, tomar cuidado na suposta conversão.
Nativamente o windows usa funções que terminam com "W" (wide char) para ler caracteres unicode enquanto strings ansi terminam com "A".
Um exemplo é a função GetCommandLine para se ler a linha de comandos, a função unicode é GetCommandLineW enquanto para se ler ansi é GetCommandLineA.

O senhor pode fazer testes para ver as diferenças, escreva um texto comum no notepad e salve-o. Abra-o usando um editor hexadecimal e perceberá que os primeiros caracteres ASCII batem exatamente em posição/símbolos que os ANSI e são praticamente iguais, agora, no notepad salve o arquivo como UTF-8 -unicode- e perceberá que os caracteres ASCII também batem em posição/símbolos que os UNICODE, mas a codificação interna é diferente já que um símbolo/dígito/char necessita de 2 bytes ao invés de apenas 1, geralmente para idiomas ocidentais inserem um zero (zero geralmente significa EOS ou EOF -fim da string ou fim do arquivo-), com isso geralmente vai travar logo no 1o caracter/símbolo pois o zero vai ser tratado como o citado.

Em resumo, a letra "A" ou "a" ou "0" em ansi são representados por apenas um byte internamente no pc, enquanto para unicode são 2 ou mais bytes.
Desliguei-me do fórum. Conta canelada.
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal