Página 1 de 1
Dúvida sobre o comando LEN
Enviado: 10 Mai 2013 11:56
por Vlademiro
Pessoal, deve ser por causa do UTF-8, mas os valores abaixo da função LEN divergem.
Código: Selecionar todos
HB_CDPSELECT( "UTF8EX" )
function main()
? len("MAURÍCIO") // Retorna 9
? len("MAURICIO") // Retorna 8
return
Não existe uma forma de retornar 8 para ambos os casos ?
Valeu! :xau
Dúvida sobre o comando LEN
Enviado: 10 Mai 2013 13:25
por Vlademiro
Só acrescentando que aqui no fórum já postei sobre UTF-8 e consegui solucionar graçar a vcs.
Link >
https://pctoledo.org/forum/viewto ... =4&t=13250
Porém, esse agora não está dando certo. Acho que o comando LEN não :? funciona com UTF-8.
Dúvida sobre o comando LEN
Enviado: 10 Mai 2013 15:50
por Jairo Maia
Olá Vlademiro,
Primeiro, mesmo que você remover a chamada
HB_CDPSELECT( "UTF8EX" ) nada muda. Uma string acentuada com codificação UTF-8, será retornado um byte a mais para cada acento contido nela.
A função que retornaria o tamanho correto de uma string com caracteres especiais (acentos ou cedilha) formatada em UTF-8 seria: Hb_ULen( cString ), mas se não estou enganado, ela só fará parte do Harbour se você compilar o Harbour em UTF-8.
Se você não usa o Harbour em UTF-8, você precisa converter a string para OEM ou ANSI e usar a função Len():
Código: Selecionar todos
Function Main()
? len( "MAURICIO" ) // Retorna 8
? Len( Hb_UTF8TOSTR( "MAURÍCIO" ) ) // Retorna 8
// o inverso seria Hb_STRTOUTF8( cString )
return
Dúvida sobre o comando LEN
Enviado: 10 Mai 2013 17:22
por Vlademiro
Jairo, vc é o cara!
Realmente a função hb_Ulen funcionou!
Pena que não resolveu o meu problema. É que eu estou tentando aproveitar os relatórios gerados pelo MIRO gerador de sistemas e está aparecendo assim :
Nome Valor
MAURICIO (10 espaços em branco) 10,00 << aqui não perde pois não tem acento.
MAURÍCIO (09 espaços em brando) 10,00 << Quando coloco acentos perde uma espaço a esquerda.
Se forem dois acentos perde dois espaços, e assim sucessivamente.
abcáé 10,00 << perde dois espaços pois tem dois caracteres acentuados.
Mistério... :-O
Achava que era o retorno do tamanho do campo, mas já substituí em todo o fonte do relatório sem sucesso.
Vou tentar mais um pouco.
Obrigado!