UTF-8
Enviado: 12 Jan 2021 01:38
Sei lá... tanta coisa sobre UTF-8, e aí acontece isso.
E aí?
E aí?
Vai ficar para traz, pq todo mundo está usando UTF8 até a Microsoft, ninguém usa mais ansi, é tudo UTF8. Essas coisas antigas, só para compatibilidade.Vale a pena abandonar o tradicional ANSI ?
Código: Selecionar todos
cStr := HB_StrToUTF8( TXTdesc, "PT" )
Código: Selecionar todos
hb_StrToUtf8( sData, sCodepageIN )
Translates sData from a codepage sCodepageIN to utf8Código: Selecionar todos
hb_Utf8ToStr( sData, sCodepageOUT )
Translates sData from utf8 to a sCodepageOUT codepageQual é a versão do seu Harbour ?Kapiaba, dá um erro de execução: "Argument Error". Já tinha tentado algo assim de um exemplo e deu também.
Código: Selecionar todos
REQUEST HB_CODEPAGE_UTF8EX, HB_CODEPAGE_PT850, HB_CODEPAGE_PTISO, HB_LANG_PT
hb_cdpSelect( "UTF8EX" )
Código: Selecionar todos
STATIC FUNCTION Carregar_Nomes()
LOCAL wData1 := Frm_RemessaCCN.DatePicker_1.Value
DBSELECTAR("CLIENTES")
IF ! DBSEEK(DTOS(wData1))
WHILE ! EOF()
IF DATACAD >= wData1
EXIT
ENDIF
DBSKIP()
END
ENDIF
WHILE ! EOF()
IF DATACAD == wData1
hb_cdpSelect( "PTISO" )
HB_LangSelect( "PT" )
msginfo('entrou: '+CLIENTES->NOME)
cNome := HB_StrToUTF8(CLIENTES->NOME, "PT")
msginfo('virou: '+cnome)
Frm_RemessaCCN.Grid_2.AddItem( { CLIENTES->MATRIC, ; // 1
cNome, ; // 2
CLIENTES->CPF } ) // 3
hb_cdpSelect( "UTF8EX" )
ENDIF
DBSKIP()
END
RETURN NIL
Código: Selecionar todos
IF DATACAD == wData1
hb_cdpSelect( "PTISO" )
HB_LangSelect( "PT" )
msginfo('entrou: '+CLIENTES->NOME)
cNome := HB_StrToUTF8(CLIENTES->NOME, "PT")
msginfo('virou: '+cnome)
Frm_RemessaCCN.Grid_2.AddItem( { CLIENTES->MATRIC, ; // 1
cNome, ; // 2
CLIENTES->CPF } ) // 3
hb_cdpSelect( "UTF8EX" )
ENDIF
Código: Selecionar todos
IF DATACAD == wData1
//hb_cdpSelect( "PTISO" )
//HB_LangSelect( "PT" )
msginfo('entrou: '+CLIENTES->NOME)
cNome := HB_StrToUTF8(CLIENTES->NOME, "PT850") // <<<==== Mude para PT850 a CodePage aqui
msginfo('virou: '+cnome)
Frm_RemessaCCN.Grid_2.AddItem( { CLIENTES->MATRIC, ; // 1
cNome, ; // 2
CLIENTES->CPF } ) // 3
//hb_cdpSelect( "UTF8EX" )
ENDIFCódigo: Selecionar todos
WHILE ! EOF()
// Cliente sem CPF não será enviado, pois será rejeitado //
//IF EMPT(ALLTRIM(CLIENTES->CPF))
// DBSKIP()
// LOOP
//ENDIF
////
IF DATACAD == wData1
//hb_cdpSelect( "PTISO" )
//HB_LangSelect( "PT" )
msginfo('entrou: '+CLIENTES->NOME)
cNome := HB_StrToUTF8(HB_AnsiToOem(CLIENTES->NOME), "PT850")
msginfo('virou: '+cnome)
Frm_RemessaCCN.Grid_2.AddItem( { CLIENTES->MATRIC, ; // 1
cNome, ; // 2
CLIENTES->CPF } ) // 3
//hb_cdpSelect( "UTF8EX" )
ENDIF
DBSKIP()
END
Mas... e como fica no programa, até agora não entendi, no que se refere a apenas usar, ou ter que ficar convertendo toda hora.Itamar M. Lins Jr. escreveu:Vai ficar para traz, pq todo mundo está usando UTF8 até a Microsoft, ninguém usa mais ansi, é tudo UTF8. Essas coisas antigas, só para compatibilidade.
Ué, só converte 1 vez. Se tiver gravado no BD sem ser UTF8. Se o BD for UTF8 nem precisa.Mas... e como fica no programa, até agora não entendi, no que se refere a apenas usar, ou ter que ficar convertendo toda hora.
Código: Selecionar todos
hb_cdpSelect( "UTF8EX" )
HB_LangSelect( "PT" )
Código: Selecionar todos
REQUEST HB_CODEPAGE_UTF8EXCódigo: Selecionar todos
hb_cdpSelect("UTF8EX")Código: Selecionar todos
REQUEST HB_LANG_PTCódigo: Selecionar todos
HB_LangSelect("PT")