Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Atualmente, na normatização da Unicode Consortion, temos 4 diferentes tipos de formas normais para a UTF-8 que são: NFD,NFC, NFKC e NFKD.

Sintaxe:

Bloco de código
oUni1 := tUnicode():New()
oUni1:Normalize( <sInput>, <sConvStr>, <CONVMODE_FLAG> )

...

A entrada desta função aceita a seguinte parametrização:
Parâmetro de EntradaReferênciaObrigatórioDescrição
sInput
XString, no formato UTF-8 para ser normalizada
sConvStrXXVariável string passada por referência para armazenar o a string normalizada
CONVMODE_FLAG
XFlags para configuração da normalização

...

Bloco de código
#define  NORMALFORM_TONFC  0
#define  NORMALFORM_TONFD  1
#define  NORMALFORM_TONFKC  2
#define  NORMALFORM_TONFKD  3

Static Function hex2asc(cHexStr)
  Local cRet := ''
  Local nI 
  For nI := 1 to len(cHexStr) step 2 
    cRet += chr(__HEXTODEC(substr(cHexStr,nI,2)))
  Next 
Return cRet
 
User Function 9581672356
    // String: "Soluções e ações" na NFD
    Local sInput := "536F6C7563CCA76FCC8365732065204163CCA76FCC83657300"
    // String: "Soluções e ações" na NFC
    Local sExpected := "536F6C75C3A7C3B5657320652041C3A7C3B5657300"
    Local sConvStr := ''
    
    // Conversões para o formato
    sInput := hex2asc(sInput)
    sExpected := hex2asc(sExpected)
    
    // Conversão da forma normal do UTF-8
    oUni1 := tUnicode():New()
    oUni1:Normalize( sInput, sConvStr, NORMALFORM_TONFC )
    
    // Compara para verificar se está de acordo com o esperado
    IF (sConvStr <> sExpected)
	        Conout("##### Conversão FALHA")
        Return -1
    ELSE
	
        Conout("##### Conversão OK")
        Return 0
    ENDIF
Return