UTF-8

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

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

UTF-8

Mensagem por Itamar M. Lins Jr. »

Ola!
Seu teste.

Código: Selecionar todos

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
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

UTF-8

Mensagem por asimoes »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

test.png
Ou... pra não obrigar muita coordenada

Código: Selecionar todos

#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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

É 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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

UTF-8

Mensagem por JoséQuintas »

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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

UTF-8

Mensagem por Itamar M. Lins Jr. »

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

Código: Selecionar todos

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)

Código: Selecionar todos

...
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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

UTF-8

Mensagem por Itamar M. Lins Jr. »

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.

Código: Selecionar todos

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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

UTF-8

Mensagem por Itamar M. Lins Jr. »

Ola!
O Maurizio me passou a solução.
Temos as funções hb_UPadR,hb_UPadL,hb_UPadC, esse U ai é UTF8!

Código: Selecionar todos

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.
Saudações,
Itamar M. Lins Jr.
Responder