Abrir un archivo CSV forzando en UTF-8

Post Reply
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Abrir un archivo CSV forzando en UTF-8

Post by goosfancito »

Buen dia.

Me pasaron archivos en csv, que tengo que abrirlos en formato UTF-8 sino aparecen todos los caracteres raros como:
Colisión entre vehículos


intente leer cada parte del archivo CSV y convertirlos con HB_StrToUTF8
pero la salida no es la que esperaba:
Colisión entre vehículos


En que le estoy pifiando?

gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
cnavarro
Posts: 6557
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Been thanked: 3 times

Re: Abrir un archivo CSV forzando en UTF-8

Post by cnavarro »

Prueba esto

Code: Select all | Expand


   cStr   := Memoread( "file.txt" )
   ? 'Directamente             : ', cStr
   ? 'UTF8toSTR            : ',hb_utf8tostr( cStr )
   ? 'OEMtoANSI + UTF8toSTR: ',hb_oemtoansi( hb_utf8tostr( cStr ) )
   ? 'ANSItoOEM + UTF8toSTR: ',hb_ansitooem( hb_utf8tostr( cStr ) )
   ? 'UTF8toSTR + OEMtoANSI: ',hb_utf8tostr( hb_oemtoansi( cStr ) )
   ? 'UTF8toSTR + ANSItoOEM: ',hb_utf8tostr( hb_ansitooem( cStr ) )
   ? 'OEMtoANSI            : ',hb_oemtoansi( cStr )
   ? 'ANSItoOEM            : ',hb_ansitooem( cStr )

 


o tambien puedes probar

Code: Select all | Expand


REQUEST HB_CODEPAGE_ESWIN

? := hb_Translate( cStrUtf8 , "UTF8", "ESWIN" )
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
goosfancito
Posts: 1955
Joined: Fri Oct 07, 2005 7:08 pm

Re: Abrir un archivo CSV forzando en UTF-8

Post by goosfancito »

Muchísimas gracias!
Funcionó este:

Code: Select all | Expand

hb_oemtoansi( hb_utf8tostr( cStr ) )


GraciaS!
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
ORibeiro
Posts: 187
Joined: Mon Oct 20, 2008 6:33 pm
Location: Itu, Sao Paulo, Brazil

Re: Abrir un archivo CSV forzando en UTF-8

Post by ORibeiro »

Estou com o mesmo problema quando os dados vem de uma API.

Nenhum desses tirou os acentos do nome: José João A. Gonçalves

cStr := "José João A. Gonçalves"
? 'Directamente : ', cStr
? 'UTF8toSTR : ',hb_utf8tostr( cStr )
? 'OEMtoANSI + UTF8toSTR: ',hb_oemtoansi( hb_utf8tostr( cStr ) )
? 'ANSItoOEM + UTF8toSTR: ',hb_ansitooem( hb_utf8tostr( cStr ) )
? 'UTF8toSTR + OEMtoANSI: ',hb_utf8tostr( hb_oemtoansi( cStr ) )
? 'UTF8toSTR + ANSItoOEM: ',hb_utf8tostr( hb_ansitooem( cStr ) )
? 'OEMtoANSI : ',hb_oemtoansi( cStr )
? 'ANSItoOEM : ',hb_ansitooem( cStr )
_ Ribeiro
OASyS Informática
Fwh18.02 + xHarbour 1.2.3 + Bcc72
User avatar
karinha
Posts: 7925
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Abrir un archivo CSV forzando en UTF-8

Post by karinha »

// ..\Samples\SEMACENT.PRG - by kapiabafwh@gmail.com - 12/08/2020 - Covid-19 Quarentine.

Code: Select all | Expand


#include "FiveWin.ch"

FUNCTION Main()

   LOCAL cStr := "José João A. Gonçalves"
   LOCAL cRet

   cRet := TIRA_ACENTUACAO( cStr )

   ? cRet

RETURN NIL
// INCORPORAR CHR(ASC) NOVO/DESCONHECIDO.
FUNCTION TIRA_ACENTUACAO( cStr )

   LOCAL cStrNew := "", nX, cAcentos, cLetras

   cAcentos := {"é","ç","ã","ý","ƒ","Æ","PEÇAS","Ç"," ","µ","…","·","‚","É","ê","ˆ","","Ò","í","Í","ó","¢","à","ä","å","“","â","ú","é","","š","ç","€","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ç","ù","AAO","§","¦","º","ª","€","‡","Ç","ç","'","`","ø","¡","Þ","×","Ø", chr(239)}
   cLetras  := {"e","c","a","2","A","A","PECAS","A","A","A","A","A","E","E","E","E","E","E","I","I","O","O","O","O","O","O","O","U","U","U","U","C","C","A","A","A","A","A","A","E","E","E","E","I","I","O","O","O","O","O","O","U","U","U","U","C"," ","CAO",".",".",".",".","C","C","C","C","" ,"" ,".","I","I","I","I",    ""   }

   For nX := 1 TO LEN(cAcentos)

      cStrNew := StrTran(cStr, cAcentos[nX], cLetras[nX])

      cStr := cStrNew

   Next

RETURN( cStrNew )
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
ORibeiro
Posts: 187
Joined: Mon Oct 20, 2008 6:33 pm
Location: Itu, Sao Paulo, Brazil

Re: Abrir un archivo CSV forzando en UTF-8

Post by ORibeiro »

Olá João,

Obrigado por responder, no entanto, infelizmente a sua função não funcionou para trocar os acentos UTF8.

A função HB_UTF8TOSTR() também não funciona.

Não sei mais o que fazer para converter UTF8 em ASC para depois tirar os acentos.
_ Ribeiro
OASyS Informática
Fwh18.02 + xHarbour 1.2.3 + Bcc72
User avatar
karinha
Posts: 7925
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Abrir un archivo CSV forzando en UTF-8

Post by karinha »

Aqui, funcionou bem.

Tente / Intente:

Code: Select all | Expand


   HB_SETCODEPAGE( "UTF8" )

   mxBairro := HB_OemToAnsi( HB_UTF8ToStr( mxBairro ))
   mxEndere := AllTrim( HB_OemToAnsi( HB_UTF8ToStr( mxEndere )) )
   mCidade  := HB_OemToAnsi( HB_UTF8ToStr( mCidade ))
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
Posts: 7925
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Abrir un archivo CSV forzando en UTF-8

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
ORibeiro
Posts: 187
Joined: Mon Oct 20, 2008 6:33 pm
Location: Itu, Sao Paulo, Brazil

Re: Abrir un archivo CSV forzando en UTF-8

Post by ORibeiro »

Na mosca! Resolveu. Obricado.
_ Ribeiro
OASyS Informática
Fwh18.02 + xHarbour 1.2.3 + Bcc72
Post Reply