
DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
txt utf8 con formato diferente
-
- Mensajes: 16
- Registrado: Sab Oct 09, 2010 3:19 pm
txt utf8 con formato diferente
Hola a todos, estoy programando la salida de la cadena original a un archivo de texto llamado utf8.txt
Dim Cad As Integer
cad = FreeFile
Open CurrentProject.Path & "\configcfd\utf8.txt" For Output As #cad
Print #Cad, Me.Sellop
Close #Cad
despues de esto hago todo el proceso de sellado y parece que todo va bien, pero cuando verifico el xml en el verificador del sat, me dice que no es valido el sello, ya verifique la conversion de la cadena a md5 y parece que hay esta el problema, al exportar la cadena original convertido en utf-8 me aparece esto en el archivo de texto md5.txt.
ffc715851f54f9499bd2bc21b829ec74
despues hise pruebas antes de ejecutar el bat
OpenSSL dgst -md5 utf8.txt >md5.txt
para hacer la digestion, entre al archivo utf8.txt y sin realizar ningun cambio lo guarde me sali y ejecute el archivo
OpenSSL dgst -md5 utf8.txt >md5.
y me mando esto
8da7ed9f61130bb346f1f816f7075fc9
muy diferente a lo que me manda cuando no hago el proceso de guardarlo, me imagino que pasa con un formato diferente por eso es que no manda la digestion correcta cuando lo hago sin guardarlo, la segunda digestion es la correcta ya lo verifique, el problema es que tengo que entrar al archivo y guardarlo para que sea correcto, tiene alguna idea de por que pasa esto, programo en vba de access.
Grcias de antemano
Dim Cad As Integer
cad = FreeFile
Open CurrentProject.Path & "\configcfd\utf8.txt" For Output As #cad
Print #Cad, Me.Sellop
Close #Cad
despues de esto hago todo el proceso de sellado y parece que todo va bien, pero cuando verifico el xml en el verificador del sat, me dice que no es valido el sello, ya verifique la conversion de la cadena a md5 y parece que hay esta el problema, al exportar la cadena original convertido en utf-8 me aparece esto en el archivo de texto md5.txt.
ffc715851f54f9499bd2bc21b829ec74
despues hise pruebas antes de ejecutar el bat
OpenSSL dgst -md5 utf8.txt >md5.txt
para hacer la digestion, entre al archivo utf8.txt y sin realizar ningun cambio lo guarde me sali y ejecute el archivo
OpenSSL dgst -md5 utf8.txt >md5.
y me mando esto
8da7ed9f61130bb346f1f816f7075fc9
muy diferente a lo que me manda cuando no hago el proceso de guardarlo, me imagino que pasa con un formato diferente por eso es que no manda la digestion correcta cuando lo hago sin guardarlo, la segunda digestion es la correcta ya lo verifique, el problema es que tengo que entrar al archivo y guardarlo para que sea correcto, tiene alguna idea de por que pasa esto, programo en vba de access.
Grcias de antemano
-
- Mensajes: 372
- Registrado: Mié Ago 11, 2010 1:55 am
- Ubicación: México, D.F.
- Contactar:
Re: txt utf8 con formato diferente
¿Como estas generando tu cadena original?... si esta no cumple con los requisitos, por más que la digestion en MD5 resulten iguales, jamas obtendrás un sello valido...
Saludos
Saludos
Todo lo que no es dado es perdido
-
- Mensajes: 16
- Registrado: Sab Oct 09, 2010 3:19 pm
Re: txt utf8 con formato diferente
Set rst = CurrentDb.OpenRecordset(" Select * From [" & Forms!inicio!Ruta & "\facturas.mdb;PWD=svp261206-2].detalles_facturas where factura=" & Me.Lista.Column(1) & "")
While Not rst.EOF
vpartidas = vpartidas & rst!cantidad & "|" & rst!unidad & "|" & rst!Descripcion & "|" & Format(rst!preciop, "########0.00") & "|" & Format(rst!preciotp, "########0.00") & "|"
rst.MoveNext
Wend
rst.Close
vsversion = "||" & Me.version & "|"
vsserie = Me.serie & "|"
vsfolio = Me.folio & "|"
vsfecha = Mid(Vfecha, 7, 4) & "-" & Mid(Vfecha, 4, 2) & "-" & Mid(Vfecha, 1, 2) & "T" & Vhora & "|"
vsnaprob = Me.noaprob & "|"
vsaaprob = Me.anoaprob & "|"
vstcomprobante = Me.tcomprobate & "|"
vsfpago = Me.fpago & "|"
vscpago = Me.cpago & "|"
vssubtotal = Me.subtotal & "|"
vsdescuento = Me.Descuento & "|"
vstotal = Me.total & "|"
vsrfce = Me.rfce & "|"
vsrazonse = Me.nombree & "|"
vscallee = Me.callee & "|"
vsexte = Me.exteriore & "|"
If Me.interiore = "" Or IsNull(Me.interiore) Then
vsinte = ""
Else
vsinte = Me.interiore & "|"
End If
vscole = Me.coloniae & "|"
If Me.localidade = "" Or IsNull(Me.localidade) Then
vslocalidade = ""
Else
vslocalidade = Me.localidade & "|"
End If
vsmune = Me.municipioe & "|"
Vseste = Me.estadoe & "|"
Vspaise = Me.paise & "|"
vscodposte = Me.codpose & "|"
Vsrfcr = Me.rfcr & "|"
vsrazonsr = Me.nombrer & "|"
Vscaller = Me.caller & "|"
Vsextr = Me.exteriorr & "|"
If Me.interiorr = "" Or IsNull(Me.interiorr) Then
vsintr = ""
Else
vsintr = Me.interiorr & "|"
End If
Vscolr = Me.coloniar & "|"
If Me.localidadr = "" Or IsNull(Me.localidadr) Then
vslocalidadr = ""
Else
vslocalidadr = Me.localidadr & "|"
End If
Vsmunr = Me.municipior & "|"
Vsestr = Me.estador & "|"
vspaiser = Me.paisr & "|"
Vscodposr = Me.codposr & "|"
vsivaetiq = Format(16, "########0.00") & "|"
vsiva = Format(Me.iva, "########0.00") & "|"
cadena_original = ""
cadena_original = vsversion & vsserie & vsfolio & vsfecha & vsnaprob & vsaaprob & vstcomprobante & vsfpago & vscpago & vssubtotal & vsdescuento & _
vstotal & vsrfce & vsrazonse & vscallee & vsexte & vsinte & vscole & vslocalidade & vsmune & Vseste & Vspaise & vscodposte & Vsrfcr & _
vsrazonsr & Vscaller & Vsextr & vsinter & Vscolr & vslocalidadr & Vsmunr & Vsestr & vspaiser & Vscodposr & vpartidas & "IVA" & "|" & _
vsivaetiq & vsiva & "|"
Me.Cadena = cadena_original
luego la convierto a utf8
UTF8 = ""
For a = 1 To Len(cadena_original)
Caracter = AscW(Mid(cadena_original, a, 1))
If Caracter < 128 Then
UTF8 = UTF8 + Mid(cadena_original, a, 1)
ElseIf ((Caracter > 127) And (Caracter < 2048)) Then
UTF8 = UTF8 + Chr(((Caracter \ 64) Or 192))
UTF8 = UTF8 + Chr(((Caracter And 63) Or 128))
Else
UTF8 = UTF8 + Chr(((Caracter \ 144) Or 234))
UTF8 = UTF8 + Chr((((Caracter \ 64) And 63) Or 128))
UTF8 = UTF8 + Chr(((Caracter And 63) Or 128))
End If
Next a
Me.Sellop.SetFocus
Me.Sellop.Text = UTF8
luego la mando al archivo de texto utf8.txt
Dim Channel As Integer
Channel = FreeFile
Open CurrentProject.Path & "\configcfd\utf8.txt" For Output As #Channel
Print #Channel, Me.Sellop
Close #Channel
creo que algo me falta pero no se que espero encuentres la falla, gracias por tu interes.
While Not rst.EOF
vpartidas = vpartidas & rst!cantidad & "|" & rst!unidad & "|" & rst!Descripcion & "|" & Format(rst!preciop, "########0.00") & "|" & Format(rst!preciotp, "########0.00") & "|"
rst.MoveNext
Wend
rst.Close
vsversion = "||" & Me.version & "|"
vsserie = Me.serie & "|"
vsfolio = Me.folio & "|"
vsfecha = Mid(Vfecha, 7, 4) & "-" & Mid(Vfecha, 4, 2) & "-" & Mid(Vfecha, 1, 2) & "T" & Vhora & "|"
vsnaprob = Me.noaprob & "|"
vsaaprob = Me.anoaprob & "|"
vstcomprobante = Me.tcomprobate & "|"
vsfpago = Me.fpago & "|"
vscpago = Me.cpago & "|"
vssubtotal = Me.subtotal & "|"
vsdescuento = Me.Descuento & "|"
vstotal = Me.total & "|"
vsrfce = Me.rfce & "|"
vsrazonse = Me.nombree & "|"
vscallee = Me.callee & "|"
vsexte = Me.exteriore & "|"
If Me.interiore = "" Or IsNull(Me.interiore) Then
vsinte = ""
Else
vsinte = Me.interiore & "|"
End If
vscole = Me.coloniae & "|"
If Me.localidade = "" Or IsNull(Me.localidade) Then
vslocalidade = ""
Else
vslocalidade = Me.localidade & "|"
End If
vsmune = Me.municipioe & "|"
Vseste = Me.estadoe & "|"
Vspaise = Me.paise & "|"
vscodposte = Me.codpose & "|"
Vsrfcr = Me.rfcr & "|"
vsrazonsr = Me.nombrer & "|"
Vscaller = Me.caller & "|"
Vsextr = Me.exteriorr & "|"
If Me.interiorr = "" Or IsNull(Me.interiorr) Then
vsintr = ""
Else
vsintr = Me.interiorr & "|"
End If
Vscolr = Me.coloniar & "|"
If Me.localidadr = "" Or IsNull(Me.localidadr) Then
vslocalidadr = ""
Else
vslocalidadr = Me.localidadr & "|"
End If
Vsmunr = Me.municipior & "|"
Vsestr = Me.estador & "|"
vspaiser = Me.paisr & "|"
Vscodposr = Me.codposr & "|"
vsivaetiq = Format(16, "########0.00") & "|"
vsiva = Format(Me.iva, "########0.00") & "|"
cadena_original = ""
cadena_original = vsversion & vsserie & vsfolio & vsfecha & vsnaprob & vsaaprob & vstcomprobante & vsfpago & vscpago & vssubtotal & vsdescuento & _
vstotal & vsrfce & vsrazonse & vscallee & vsexte & vsinte & vscole & vslocalidade & vsmune & Vseste & Vspaise & vscodposte & Vsrfcr & _
vsrazonsr & Vscaller & Vsextr & vsinter & Vscolr & vslocalidadr & Vsmunr & Vsestr & vspaiser & Vscodposr & vpartidas & "IVA" & "|" & _
vsivaetiq & vsiva & "|"
Me.Cadena = cadena_original
luego la convierto a utf8
UTF8 = ""
For a = 1 To Len(cadena_original)
Caracter = AscW(Mid(cadena_original, a, 1))
If Caracter < 128 Then
UTF8 = UTF8 + Mid(cadena_original, a, 1)
ElseIf ((Caracter > 127) And (Caracter < 2048)) Then
UTF8 = UTF8 + Chr(((Caracter \ 64) Or 192))
UTF8 = UTF8 + Chr(((Caracter And 63) Or 128))
Else
UTF8 = UTF8 + Chr(((Caracter \ 144) Or 234))
UTF8 = UTF8 + Chr((((Caracter \ 64) And 63) Or 128))
UTF8 = UTF8 + Chr(((Caracter And 63) Or 128))
End If
Next a
Me.Sellop.SetFocus
Me.Sellop.Text = UTF8
luego la mando al archivo de texto utf8.txt
Dim Channel As Integer
Channel = FreeFile
Open CurrentProject.Path & "\configcfd\utf8.txt" For Output As #Channel
Print #Channel, Me.Sellop
Close #Channel
creo que algo me falta pero no se que espero encuentres la falla, gracias por tu interes.
-
- Mensajes: 372
- Registrado: Mié Ago 11, 2010 1:55 am
- Ubicación: México, D.F.
- Contactar:
Re: txt utf8 con formato diferente
Hola...
Hace años que no programo en VB (¿que versión estas usando?), pero no estoy seguro de que el paso que haces a UTF-8 sea el correcto, he visto varias funciones en Internet que son muy diferentes a la que usas, UTF-8 tiene soporte acentos y la letra ñ, por lo que el paso a UTF-8 es realmente para los siguiente caracteres: “, <, > y ‘.
Para verificar donde esta el error, prueba son los datos de la siguiente factura de prueba: http://www.correolibre.net/archivos/factura.xml
Ingresalos a tu sistema y pon aquí la cadena original resultante, tanto la primero como la que obtienes después de que aplicas tu función UTF-8.
Por cierto, yo uso una lógica totalmente diferente a la tuya:
1.- Genero el XML con todos los datos de la factura de la base de datos
2.- Obtengo la cadena original parseando el XML contra los XSLT proporcionados con el SAT
3.- En un solo paso obtengo la digestión en MD5, sello con mi firma y paso a BASE64
4.- Agrego el sello al XML
5.- Lista para validar...
Publica lo que te pido para poder seguir ayudándote...
Saludos
Hace años que no programo en VB (¿que versión estas usando?), pero no estoy seguro de que el paso que haces a UTF-8 sea el correcto, he visto varias funciones en Internet que son muy diferentes a la que usas, UTF-8 tiene soporte acentos y la letra ñ, por lo que el paso a UTF-8 es realmente para los siguiente caracteres: “, <, > y ‘.
Para verificar donde esta el error, prueba son los datos de la siguiente factura de prueba: http://www.correolibre.net/archivos/factura.xml
Ingresalos a tu sistema y pon aquí la cadena original resultante, tanto la primero como la que obtienes después de que aplicas tu función UTF-8.
Por cierto, yo uso una lógica totalmente diferente a la tuya:
1.- Genero el XML con todos los datos de la factura de la base de datos
2.- Obtengo la cadena original parseando el XML contra los XSLT proporcionados con el SAT
3.- En un solo paso obtengo la digestión en MD5, sello con mi firma y paso a BASE64
4.- Agrego el sello al XML
5.- Lista para validar...
Publica lo que te pido para poder seguir ayudándote...
Saludos
Todo lo que no es dado es perdido
-
- Mensajes: 14
- Registrado: Vie Oct 01, 2010 7:28 pm
Re: txt utf8 con formato diferente
Yo también tenía problemas en el momento de obtener el sello con el archivo utf8.txt. Busque ayuda pero tuve que resolver el problema a prueba y error. En mi caso, el problema fue que al guardar el archivo, se esconde un EOF que altera la información del archivo de texto. Para eleminar el EOF simplemente se ponen un punto y coma (;) y eso es todo. Probe el validador del SAT y todo correcto. Espero que esto sea la causa del problema y que lo puedas resolver:
Ejemplo:
Open "UTF8.txt" For Output As #1
Print #1, Cadena;
Close #1
También es muy importante que la cadena original coincida con el archivo XML. Esto lo puedes comprobar con el XML Notepad de Microsoft y el archivo cadenaoriginal_2_0.xslt del SAT, para hacer la transformación XML a cadeba original.
Ejemplo:
Open "UTF8.txt" For Output As #1
Print #1, Cadena;
Close #1
También es muy importante que la cadena original coincida con el archivo XML. Esto lo puedes comprobar con el XML Notepad de Microsoft y el archivo cadenaoriginal_2_0.xslt del SAT, para hacer la transformación XML a cadeba original.
-
- Mensajes: 372
- Registrado: Mié Ago 11, 2010 1:55 am
- Ubicación: México, D.F.
- Contactar:
Re: txt utf8 con formato diferente
Hola...
Para asegurarse que la cadena original esta correctamente formada, es mejor parsear el XML del CFD contra el XSLT proporcionado por la autoridad, así la cadena resultante es tal como la pide...
Saludos
Para asegurarse que la cadena original esta correctamente formada, es mejor parsear el XML del CFD contra el XSLT proporcionado por la autoridad, así la cadena resultante es tal como la pide...
Saludos
Todo lo que no es dado es perdido
-
- Mensajes: 1
- Registrado: Mar Nov 09, 2010 8:32 am
Re: txt utf8 con formato diferente
Buenos días.
En mi experiencia con la programación del cfd y en particular la cadena original puedo decirles que yo me pase mucho tiempo buscando algun error en ella y no lo encontre, y es porque siempre busque en el lugar equivocado, resulta que al crear el archivo de texto con la cadena original este quedaba en un formato UTF8, PERO ESTO NO ESE CORRECTO, debe de se UTF8 SIN BOM. así es que me di a la taria de quitarle la marca BOM, y es muy simple solo que yo no sabia que eso existiera.
Les paso mi codigo.
Dim fileName As String = "CadenaOriginal.txt"
Dim strStreamW As Stream
Dim strStreamWriter As StreamWriter
Dim PathUbicacionDeArchivos as string = "c:\Sello\"
Dim cadena as string = ""||2.0|A|0000122|2010-11-04T13:40:07|1|2010|ingreso|UNA SOLA EXHIBICIÓN|4060|20001|GEC0809301KA|GRUPO EI EN COMERCIO EXTERIOR S. DE R.L. DE C.V.|CANTÚ|9|705 1|NUEVA ANZURES|MIGUEL HIDALGO|DISTRITO FEDERAL|DISTRITO FEDERAL|MÉXICO|11590|EDM930614781|CARLOS SANCHEZ MEJIA|AYUTLA|2992|SAN FELIPE DE JESUS|DISTRITO FEDERAL|MÉXICO|07510|1.00|Servicio|1|HONORARIOS DEL AGENTE ADUANAL|1100|1100|1.00|Servicio|2|COMPLEMENTARIOS|1740|1740|1.00|Servicio|3|VALIDACION DE PEDIMENTOS|290|290|1.00|Servicio|4|TELEGRAMAS|580|580|1.00|Servicio|5|OTROS|174|174|IVA|16|560|560||""
strStreamW = File.OpenWrite(PathUbicacionDeArchivos & fileName)
strStreamWriter = New StreamWriter(strStreamW) 'NOTA EL PROBLERA ERAN LOS PARAMETROS QUE AQUI SE PASAN, NO PONGAN NADA MAS
strStreamWriter.Write(cadena)
strStreamWriter.Close()
strStreamWriter.Dispose()
El resultado es un archivo en c:\sello\CadenaOriginal.txt en formato UTF-8 sin Bom y con este archivo ya puedes generar tu sello.
Saludos.
En mi experiencia con la programación del cfd y en particular la cadena original puedo decirles que yo me pase mucho tiempo buscando algun error en ella y no lo encontre, y es porque siempre busque en el lugar equivocado, resulta que al crear el archivo de texto con la cadena original este quedaba en un formato UTF8, PERO ESTO NO ESE CORRECTO, debe de se UTF8 SIN BOM. así es que me di a la taria de quitarle la marca BOM, y es muy simple solo que yo no sabia que eso existiera.
Les paso mi codigo.
Dim fileName As String = "CadenaOriginal.txt"
Dim strStreamW As Stream
Dim strStreamWriter As StreamWriter
Dim PathUbicacionDeArchivos as string = "c:\Sello\"
Dim cadena as string = ""||2.0|A|0000122|2010-11-04T13:40:07|1|2010|ingreso|UNA SOLA EXHIBICIÓN|4060|20001|GEC0809301KA|GRUPO EI EN COMERCIO EXTERIOR S. DE R.L. DE C.V.|CANTÚ|9|705 1|NUEVA ANZURES|MIGUEL HIDALGO|DISTRITO FEDERAL|DISTRITO FEDERAL|MÉXICO|11590|EDM930614781|CARLOS SANCHEZ MEJIA|AYUTLA|2992|SAN FELIPE DE JESUS|DISTRITO FEDERAL|MÉXICO|07510|1.00|Servicio|1|HONORARIOS DEL AGENTE ADUANAL|1100|1100|1.00|Servicio|2|COMPLEMENTARIOS|1740|1740|1.00|Servicio|3|VALIDACION DE PEDIMENTOS|290|290|1.00|Servicio|4|TELEGRAMAS|580|580|1.00|Servicio|5|OTROS|174|174|IVA|16|560|560||""
strStreamW = File.OpenWrite(PathUbicacionDeArchivos & fileName)
strStreamWriter = New StreamWriter(strStreamW) 'NOTA EL PROBLERA ERAN LOS PARAMETROS QUE AQUI SE PASAN, NO PONGAN NADA MAS
strStreamWriter.Write(cadena)
strStreamWriter.Close()
strStreamWriter.Dispose()
El resultado es un archivo en c:\sello\CadenaOriginal.txt en formato UTF-8 sin Bom y con este archivo ya puedes generar tu sello.
Saludos.
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: txt utf8 con formato diferente
@dcordova
Gracias por el aporte, tambien es importante que las cadenas no se graben con un CR-LF (#13 #10) al final, ni tampoco con un caracter Ctrl-Z o EOF (Fin de archivo)
Gracias por el aporte, tambien es importante que las cadenas no se graben con un CR-LF (#13 #10) al final, ni tampoco con un caracter Ctrl-Z o EOF (Fin de archivo)
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 1
- Registrado: Vie Ene 28, 2011 2:00 pm
Re: txt utf8 con formato diferente
Hola Mauricio, yo me encuentro en ese predicamento y llevo un mes sin poder generar un sello correcto, podrías darme tips en VB de como generarlo, yo creo que de inicio la conversión de mi cadena original a uft8 está mal, crees que podrías ayudarme?mauricio escribió:¿Como estas generando tu cadena original?... si esta no cumple con los requisitos, por más que la digestion en MD5 resulten iguales, jamas obtendrás un sello valido...
Saludos
Saludos
-
- Mensajes: 10
- Registrado: Jue Ene 06, 2011 10:22 am
Re: txt utf8 con formato diferente
Buen dia a compañeros...
A ver si esto les ayuda para resolver sus dudas.....solo para el tratamiento de la Cadena original
Recien armado el resumen o Cadena Original, pueden aplicar.
wCadenaOriginal = RetiraSecuencia(CadenaOriginal)
luego aplican.....
wCadenaOriginal=Encode_UTF8(wCadenaOriginal)
Finalmente graban en un archivo.
.....
Public Function RetiraSecuencia(xCadenaOriginal)
NuevaCadena = ""
For i = 1 To Len(xCadenaOriginal)
wCode = Asc(Mid(xCadenaOriginal, i, 1))
If wCode = 10 Or wCode = 13 Then
'NuevaCadena = NuevaCadena & " "
Else
NuevaCadena = NuevaCadena & Mid(xCadenaOriginal, i, 1)
End If
Next
RetiraSecuencia = NuevaCadena
End Function
Public Function Encode_UTF8(wStr)
'AscW devuelve el codigo en Unicode.
'Este valor puede ser de 0 a 65535.
'http://msdn.microsoft.com/library/defau ... ywords.asp
'
'UTF-8
'+------------------+----------------+--------------------------------+
'| UNICODE HEX | UNICODE DEC | OUTPUT |
'| From-To | From-To | Bytes |
'+------------------+----------------+--------------------------------+
'| 0..7F | 0..127 | 1 |
'| 80..7FF | 128..2047 | 2 |
'| 800..FFFF | 2048..65535 | 3 |
'+------------------+----------------+--------------------------------+
Dim X As Integer
Dim wCHR As Long
Dim UTF8_Text As String
UTF8_Text = ""
For X = 1 To Len(wStr)
wCHR = AscW(Mid(wStr, X, 1))
If wCHR < 128 Then
UTF8_Text = UTF8_Text + Mid(wStr, X, 1)
ElseIf ((wCHR > 127) And (wCHR < 2048)) Then
UTF8_Text = UTF8_Text + Chr(((wCHR \ 64) Or 192))
UTF8_Text = UTF8_Text + Chr(((wCHR And 63) Or 128))
Else
UTF8_Text = UTF8_Text + Chr(((wCHR \ 144) Or 234))
UTF8_Text = UTF8_Text + Chr((((wCHR \ 64) And 63) Or 128))
UTF8_Text = UTF8_Text + Chr(((wCHR And 63) Or 128))
End If
Next X
Encode_UTF8 = UTF8_Text
End Function
A ver si esto les ayuda para resolver sus dudas.....solo para el tratamiento de la Cadena original
Recien armado el resumen o Cadena Original, pueden aplicar.
wCadenaOriginal = RetiraSecuencia(CadenaOriginal)
luego aplican.....
wCadenaOriginal=Encode_UTF8(wCadenaOriginal)
Finalmente graban en un archivo.
.....
Public Function RetiraSecuencia(xCadenaOriginal)
NuevaCadena = ""
For i = 1 To Len(xCadenaOriginal)
wCode = Asc(Mid(xCadenaOriginal, i, 1))
If wCode = 10 Or wCode = 13 Then
'NuevaCadena = NuevaCadena & " "
Else
NuevaCadena = NuevaCadena & Mid(xCadenaOriginal, i, 1)
End If
Next
RetiraSecuencia = NuevaCadena
End Function
Public Function Encode_UTF8(wStr)
'AscW devuelve el codigo en Unicode.
'Este valor puede ser de 0 a 65535.
'http://msdn.microsoft.com/library/defau ... ywords.asp
'
'UTF-8
'+------------------+----------------+--------------------------------+
'| UNICODE HEX | UNICODE DEC | OUTPUT |
'| From-To | From-To | Bytes |
'+------------------+----------------+--------------------------------+
'| 0..7F | 0..127 | 1 |
'| 80..7FF | 128..2047 | 2 |
'| 800..FFFF | 2048..65535 | 3 |
'+------------------+----------------+--------------------------------+
Dim X As Integer
Dim wCHR As Long
Dim UTF8_Text As String
UTF8_Text = ""
For X = 1 To Len(wStr)
wCHR = AscW(Mid(wStr, X, 1))
If wCHR < 128 Then
UTF8_Text = UTF8_Text + Mid(wStr, X, 1)
ElseIf ((wCHR > 127) And (wCHR < 2048)) Then
UTF8_Text = UTF8_Text + Chr(((wCHR \ 64) Or 192))
UTF8_Text = UTF8_Text + Chr(((wCHR And 63) Or 128))
Else
UTF8_Text = UTF8_Text + Chr(((wCHR \ 144) Or 234))
UTF8_Text = UTF8_Text + Chr((((wCHR \ 64) And 63) Or 128))
UTF8_Text = UTF8_Text + Chr(((wCHR And 63) Or 128))
End If
Next X
Encode_UTF8 = UTF8_Text
End Function