Clipper On Line • Ver Tópico - UTF-8

UTF-8

Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos

Moderador: Moderadores

 

UTF-8

Mensagempor Itamar M. Lins Jr. » 24 Set 2019 13:22

Ola!
Seu teste.
PROCEDURE Main

   LOCAL cTexto := ""
   set(_SET_CODEPAGE,"UTF8")

   ? cTexto := "éééééééééééé"
   ? Len( cTexto )
   ? hb_StrToUTF8( cTexto )
   ? Len( hb_StrToUTF8( cTexto ) )
   Inkey(0)

   RETURN


Saudações,
Itamar M. Lins Jr.
Anexos
utf8.png
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

UTF-8

Mensagempor JoséQuintas » 24 Set 2019 17:25

Pelo que entendi, alterou e salvou pelo bloco de notas.
Teria que avaliar o arquivo fonte também.

O Unicode representa milhares de caracteres, então à primeira vista não seria possível com 8 bits.
Mas isso confunde o próprio UTF8.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor JoséQuintas » 24 Set 2019 17:32

utf8.png


O arquivo criado como UTF-8 no PN, alterado pelo Bloco de Notas, e criado pelo Bloco de Notas.
Windows 10 - não sei se faz diferença - parece que o bloco de notas e até o console mudaram nele.
De visível, o indicativo de UTF-8 no início do arquivo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor JoséQuintas » 24 Set 2019 17:45

Teste novamente, e olhe o arquivo do bloco de notas, talvez no W7 altere pra ANSI.

utf8.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor JoséQuintas » 24 Set 2019 17:50

Lembrei que meu servidor é W7.
Sinto muito informar, mas NÃO é UTF8.
O Bloco de notas do W7 é ANSI.

utf8.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor asimoes » 24 Set 2019 21:21

Um bom teste é criar um fonte com utf-8 e outro sem

compila os 2 e verifica o tamanho final do exe de cada um
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

UTF-8

Mensagempor JoséQuintas » 06 Out 2019 19:45

hazael escreveu:Por exemplo, em um browse(), ou para desenhar uma box mas sem usar dispbox(), por exemplo...


Não entendi.
O Harbour faz o que tem que fazer.
@ 1, 0 TO 10, 10 e pronto.
Ou o Chr() no browse()

Ou só no 3.4 com GTWVG é que faz certo?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor JoséQuintas » 07 Out 2019 08:15

test.png


Ou... pra não obrigar muita coordenada

#command @ <x>, <y> BOX <char>  => @ <x>, <y>, <x>, <y> BOX <char>

   @ 01, 10 BOX CHR(200)
   @ 3, 10, 10, 40 BOX B_DOUBLE + Space(1)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor JoséQuintas » 07 Out 2019 16:40

É que citou o tbrowse.
No tbrowse é automático.
No resto... de certa forma podemos considerar programação antiga, do tempo do DOS, não compatível com uso de codepage.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor JoséQuintas » 07 Out 2019 18:24

hazael escreveu:Eu estava gravando cm UTF8 pois me parece que o padrão dos fontes do Harbour são em UTF8 também, a menos que eu estaja enganado sobre isso.


Até hoje acho isso confuso, não sei se salvando em UTF-8 tudo vai funcionar direito.
Uma coisa é tela, outra coisa é informação gravada em banco de dados.

Como já percebeu, há muitos conflitos em tela, imagine começar a acontecer isso em banco de dados.
Vou deixando isso de UTF-8 pra depois.
Por enquanto há outras prioridades mais importantes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor JoséQuintas » 08 Out 2019 14:37

hazael escreveu:* BANCO DE DADOS
* CODIGO FONTE
* TELA


Aí que está.... é mais que isso.

Supondo que crie um TXT pra enviar pro banco, ele não se encaixa em nenhuma dessas categorias.
Ou... se encaixar no código fonte.... vai arquivo TXT errado pro banco.
E não só banco... qualquer integração em TXT.

Ou seja... voltamos à estaca zero sobre UTF-8/fonte
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor Itamar M. Lins Jr. » 08 Out 2019 17:15

Ola!
Não tem dificuldade, apenas precisamos saber em que CP o texto foi criado.
REQUEST HB_LANG_PT, HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850

PROCEDURE Main

   LOCAL cTexto := ""
   set(_SET_CODEPAGE,"PTISO")
   ? cTexto := "MAÇÃ"
   set(_SET_CODEPAGE,"CP437")
   ? cTexto
   set(_SET_CODEPAGE,"UTF8")
   ? cTexto
   set(_SET_CODEPAGE,"CP850")
   ? cTexto
   Inkey(0)

   RETURN

Precisamos, se assim desejar converter as letras de origem, para a CP destino. As telas é a mesma coisa até na impressora é assim.
UTF8 é apenas uma PICTURE com mais opções. E tem o UTF8EX(extendido)
...
oPrn:CharSet(WIN_OEM_CHARSET) //oPrn:CharSet(255)
...
HB_CDPSelect("PT850")
...
If lMatricial
  oPrn:TextoutAt(nCol,,'*---------------------------------------+----------------------------------*',.t.)
  oPrn:TextoutAt(nCol,,'|    F A T U R A  /  D U P L I C A T A  |Para Uso da Instituicao Financeira|',.t.)
  oPrn:TextoutAt(nCol,,'|-----------+------+----------+---------|                                  |',.t.)
...
Else
  oPrn:SetPos(nCol)

  oPrn:TextoutAt(nCol,,'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»',.t.)
  oPrn:TextoutAt(nCol,,'º    F A T U R A  /  D U P L I C A T A  ºPara Uso da Instituicao Financeiraº',.t.)
  oPrn:TextoutAt(nCol,,'ÌÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍ͹                                  º',.t.)

Imprime as linhas duplas as mesmas do clipper, na impressora.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

UTF-8

Mensagempor Itamar M. Lins Jr. » 19 Jan 2020 12:13

Ola!
Apanhado aqui com UTF8.
Estou trabalhando com HTML e codificação 100% UTF8 inclusive no Harbour DBF.
Achei um problema com a função pad(), pq ela ler errado string UTF8, "çáé" no PAD() já conta 6 e é 3!, já o AllTrim() que corta os espaços funciona.
Como solução, fiz da seguinte forma.
cCliente := "çáé" //String UTF8 do HTML/Apache pad(cCliente,60) ler que tem 6 characteres e acrencenta o resto para completar 60, só que são 3 não seis.
nTam := 60 - hb_utf8len(alltrim(cCliente)) //3
cCliente :=  alltrim(cCliente) + space(nTam)

Na criação do DBF usei {"cliente","C",60,0}, o dbseek falha do campo indexado "index on cliente tag ..." pq vem sem os espaços a string "çáé".
Estava usando cCliente := pad(cCliente,60) e o dbseek não achava... Demorei aqui procurando o BO... Já estava desistindo e trocando para ISO8... e CP PTISO no DBF, mas consegui entender o problema e resolver.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

UTF-8

Mensagempor Itamar M. Lins Jr. » 20 Jan 2020 09:45

Ola!
O Maurizio me passou a solução.
Temos as funções hb_UPadR,hb_UPadL,hb_UPadC, esse U ai é UTF8!
2015-07-27 16:36 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
  * src/rtl/chruni.c
    * added new functions hb_BStuff() and hb_UStuff()

  * src/rtl/Makefile
  - src/rtl/padc.c
  - src/rtl/padl.c
  - src/rtl/padr.c
  + src/rtl/padx.c
    * added new functions hb_BPadL(), hb_BPadR(), hb_BPadC(),
      hb_UPadL(), hb_UPadR() and hb_UPadC()

  * include/harbour.hbx
    * updated

  * src/rtl/memoedit.prg
  * src/rtl/teditor.prg
    * use hb_U*() functions for string manipulation - now it works
      correctly with mulitbyte encodings even if HVM CP does enabled
      character indexing, i.e. "UTF8"


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Anterior



Retornar para Bate Papo

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro