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 JoséQuintas » 17 Set 2019 18:36

Lembrei do arquivo do governo, e fui dar uma olhada.
Ele não usa acentuação nenhuma.
40 milhões de registros, 100GB
Em UTF-8, poderia aumentar pra 600GB.

600GB de importação em txt.... mais a base de gravação... e talvez temporários... e mais nossa base anterior....
3GB de disco? E tempo de processamento?

Uma simples atualização trimestral em UTF-8... acho que ainda não temos máquina suficiente pra processar isso em UTF-8.

Não tinha pensado nisso antes. É muuuito interessante.
Esse é um arquivo REAL, disponível trimestralmente pela Receita Federal.
O mesmo deve acontecer com Bancos, e outras empresas com muita informação.

Depois dessas contas, a conclusão é que UTF-8 só serve pra empresinhas pequenininhas, ou pra sites, ou pra coisas pequenas. Ou empresas gigantescas, que tem super computadores.

UTF-8 é o futuro?
Sim... no futuro vamos ter máquina que consegue processar isso.

Alguém por aí já usa UTF-8, e poderia confirmar isso?
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: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

UTF-8

Mensagempor Jairo Maia » 17 Set 2019 20:53

JoséQuintas escreveu:Alguém por aí já usa UTF-8, e poderia confirmar isso?
Eu não uso, e como você já disse, também não entendo muito sobre UTF, mas apenas lembrando que existe também UTF-16 e UTF-32.

Apenas sei que caracteres especiais latinos (acentuados e cedilha) usam 2 bytes em UTF-8, 4 Bytes em UTF-16 e 8 Bytes em UTF-32. Acho que é isso.

Também sei que quando tudo passar a usar UTF-X terá também a tecnologia de compressão. Sem compressão acho que ficará impossível, ou terá que mudar a tecnologia de hardware também para suportar.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

UTF-8

Mensagempor Itamar M. Lins Jr. » 20 Set 2019 10:57

Ola!
Até onde sei UTF e cia não aumenta arquivo, é só uma mascara para usar. As mascaras ficam nos leitores, e não nos arquivos.
1 – Via cabeçalho HTTP
Content-Type: text/html; charset=utf-8

2 – Via Meta Tag
<!-- HTML 4 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- HTML5 -->
<meta charset="utf-8"/>

3 – Via XML
<?xml version="1.0" encoding="utf-8"?>

É apenas um identificador do texto, se o texto está em japonês não adianta usar mascara de português.

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 JoséQuintas » 20 Set 2019 11:22

UTF-8 usa de um a quatro bytes (estritamente, octetos) por carácter, dependendo do símbolo Unicode que representa. É necessário apenas um byte para codificar os 128 caracteres ASCII (Unicode U+0000 a U+007F). São necessários dois bytes para caracteres Latinos com diacríticos. São também usados dois bytes para representar caracteres dos alfabetos Grego, Cirílico, Armênio, Hebraico, Sírio e Thaana (Unicode U+0080 a U+07FF). São necessários três bytes para o resto do Plano Multilingual Básico (que contém praticamente todos os caracteres comuns utilizados). Existem ainda outros caracteres que necessitam de quatro bytes.


https://pt.wikipedia.org/wiki/UTF-8

No Harbour tem funções especiais pra lidar com 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: 18010
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 » 20 Set 2019 11:32


PROCEDURE Main

   LOCAL cTexto := "éééééééééééé"

   ? cTexto
   ? Len( cTexto )
   ? hb_StrToUTF8( cTexto )
   ? Len( hb_StrToUTF8( cTexto ) )
   Inkey(0)

   RETURN


utf8.png
utf8.png (2.92 KiB) Visualizado 3685 vezes


Não usei PTBR, então a conversão foi de OEM pra UTF-8.
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: 18010
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 » 20 Set 2019 11:34


REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main

   LOCAL cTexto := "éééééééééééé"

   Set( _SET_CODEPAGE, "PTISO" )
   ? cTexto
   ? Len( cTexto )
   ? hb_StrToUTF8( cTexto )
   ? Len( hb_StrToUTF8( cTexto ) )
   Inkey(0)

   RETURN


utf8.png
utf8.png (4.48 KiB) Visualizado 3684 vezes


Com PTISO.
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: 18010
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 » 20 Set 2019 11:37

Núcleo Harbour (instalado):
hb_cdpIsUTF8()
hb_StrIsUTF8()
hb_StrToUTF8()
hb_utf8Asc()
hb_utf8At()
hb_utf8Chr()
hb_utf8Left()
hb_utf8Len()
hb_utf8Peek()
hb_utf8Poke()
hb_utf8RAt()
hb_utf8Right()
hb_utf8StrTran()
hb_utf8Stuff()
hb_utf8SubStr()
hb_UTF8ToStr()
hb_UTF8ToStrBox()
HB_CODEPAGE_UTF16LE()
HB_CODEPAGE_UTF8()
HB_CODEPAGE_UTF8EX()


Tem Asc(), At(), Chr(), Left(), Rat(), Right(), StrTran(), Stuff(), Substr(), etc. pra usar com UTF-8.
Ou seja... UTF-8 nem pensar ainda.
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: 18010
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 » 20 Set 2019 12:55

Fiz um outro teste de curiosidade.
Desta vez o FONTE em UTF-8.
Note que a string original de 11 bytes subiu pra 22 bytes.
A conversão não é importante, apenas não retirei do fonte.

utf8.png


utf82.png
utf82.png (5 KiB) Visualizado 3677 vezes
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: 18010
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 » 20 Set 2019 12:59

A última... tudo em UTF-8
11 letras retorna tamanho 22

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: 18010
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 » 20 Set 2019 13:08

Lembrei do TYPE do prg:

utf8.png


Comprovadamente, UTF-8 aumenta o tamanho.

Como eu disse antes, uma coisa é página de internet, outra coisa é base de dados.
Difícil imaginar o computador trabalhando com tamanho desconhecido de caractere, sem precisar de processamento pesado.

Já estou pensando em como isso pode afetar a base MySQL, quando escolhemos salvar como UTF-8.
Podemos sobrecarregar o servidor sem nem perceber.
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: 18010
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 » 20 Set 2019 13:11

Somente.
ANSI acaba sendo a codepage do Windows, que é PTBR.
Geralmente o programa é no nosso idioma, então não sei se precisaríamos de outra.
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: 18010
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 » 20 Set 2019 13:17

Uma coisa leva à outra.
Windows PTBR, e PROMPT em EUA/USA/437/OEM sei lá qual.
Nesse caso o tamanho não muda, é só o problema de codepage que conhecemos.

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: 18010
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 » 20 Set 2019 18:11

hazael escreveu:incluindo DOS (CP 437) que é o padrão do Clipper.


Eu já disse por aqui:
Na hora de trocar codepage, fiz todos os testes pra ver se ficava compatível.
PTISO deu os resultados certos.
Agora é tudo nessa codepage.
Só aqueles dois comandos, que já mudam tudo de uma vez.

REQUEST HB_CODEPAGE_PTISO
Set( _SET_CODEPAGE, "PTISO" )

Bateu com tudo que eu usava, então nunca mais usei nenhuma outra codepage.

Lembrando:
Console é codepage do console, Windows é codepage do Windows.
GTWVG parece console, mas usa janela Windows.
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: 18010
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 » 21 Set 2019 01:44

hazael escreveu:Interessante, no VSC tem muitos, eu mesmo já usei no mínimo 4 diferentes em situações que foi necessário, incluindo DOS (CP 437) que é o padrão do Clipper.


Curioso em saber sobre as situações.
A do Clipper é a do DOS.
No Windows 10, até o prompt mudou e aceita até mesmo UTF-8

Acredito que comuns são apenas 4: CP437 do DOS/OEM/Clipper, PT-BR do Windows, Unicode também do Windows, UTF-8.
No Linux nem sei qual é, é algo não identificado, então uso sem acentos.
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: 18010
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. » 24 Set 2019 13:07

Ola!
function main
local cTxt:=""
set(_SET_CODEPAGE,"UTF8")
cTxt := "éÉçÇ"
? cTxt
? len(cTxt)
return nil


"É" esta em cp437, "É" em UTF8 é outra coisa.
Aqui retornou len() = 4, mostrou tudo errado no console. Como é o esperado.
Não adianta escrever em um idioma e converter. O acento e a letra são 2 mesmo.
Tem que mudar a pagina antes de chamar a mascara.

Já me bati muito com isso a Hwgui é compatível com UTF -> UNICODE (Código universal)

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

Próximo



Retornar para Bate Papo

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 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