Factura electrónica y UTF-8

Estoy preparando facturas en formato xml para las facturas electrónicas del tipo Facturae del Ministerio, y me ocurre que la página del Ministerio, al validar mis facturas me da un error porque mi fichero no es utf-8.
He estado mirando foros de la V6, pero no he hallado solución.

He conseguido mediante un script de Visual Basic convertir el fichero a formato UNICODE sin perder los acentos y caracteres especiales, pero no es UTF-8.

 

¿Alguien me puede echar una mano con esto?

Os lo agredecería muchísimo, porque he estado probando scripts y viendo documentación para VBscript, pero no consigo solucionarlo.

 

Saludos.

<script src="http://velneo.es/foros/my-plugins/be-tinymcecomments/tiny_mce/themes/advanced/langs/es.js" type="text/javascript"></script>
Hola.

Asegúrate que tu fichero xml comienza por:

<?xml version="1.0" encoding="UTF-8"?>

Saludos,

Fran Varona

 

Gracias Fran, pero mi fichero empieza de la manera que tu me indicas.

Hola.

¿Cçomo generas el fichero XML? Yo lo genero con un simple "Fichero: abrir" de Velneo v6. No hice pruebas con la V7 todavía.

Saludos,

Fran Varona

 

Si Fran, lo genero de la misma manera, y le voy encolando cadenas con las etiquetas y contenidos, pero en principio la extension es TXT, luego lo copio como XML.

Hola.

Una cosa que yo hago ANTES de sacar el fichero XML es quitar todos los caracteres "extraños" que puedan aparecer en mis cadenas: acentos, diéresis, los símbolos º o ª, las eñes... Puede que vayan por ahí los tiros.

Saludos,

Fran Varona

 

Ya Fran, pero para una factura electrónica, no me puedo cargar en los nombres fiscales o en las calles los acentos o caracteres especiales.

No sé si algún otro Velneador estará haciendo facturas electrónicas para preguntarle como se las arregla.

 

Gracias por tu interés.

Saludos,

Paco Carbonell.

Creo que tu problema tiene que ver con varios hilos anteriores...  

http://velneo.es/foros/topic/problemas-con-la-codificacion-en-la-lectura-de-ficheros#post-6446

http://velneo.es/foros/topic/rejilla-ordena-mal-alfabeticamente-si-hay-acentos#post-4632

http://velneo.es/foros/topic/orden-en-las-columnas-del-grid-y-en-los-resultados-de-busquedas

Nosotros no hemos encontrado solución fácil (de momento) y es fundamental para el mundo global en el que vivimos. 

 

A la hora de leer/escribir un fichero tenemos que tener en cuenta varias cosas, pero sobre todo una; cual es la codificación en la que deseamos almacenar/leer el fichero.

 

No es lo mismo un fichero codificado en ANSI que en UTF-8 o en UNICODE y si tenes alguna duda lee el siguiente post enteritoooo... es un poco largo, pero seguro que merece la pena...

http://blog.tipesoft.com/?p=2086

 

Efectivamente Jorge, Velneo genera ficheros con codificación ANSI.

El problema es cuando un organismo como en este caso el Ministerio de Economía me exige que genere el fichero con UTF-8, de lo cual no puedo huir.

La única manera en que lo he conseguido es abriéndolo con un editor y cerrándolo con la opción UTF-8, pero esta solución es inviable puesto que van a ser mis clientes los que han de generar "automáticamente" sus facturas.

La gente de Velneo me ha estado buscando alternativas, como intentar "encolar" mis datos a otro fichero UTF-8, y aunque esta solución parece que me proporciona un fichero UTF-8, la validación del Ministerio no me lo reconoce.

Sigo desesperado buscando una solución, así que cualquier idea o comentario que me dejéis os lo agredezco.

 

Saludos.

 

Siento mucho que la solución no la de Velneo, pero seguro que nosotros te la podemos proporcionar. Hoy estoy en la Complutense en la CloudCamp de Madrid (conferencia de temas de Cloud), pero seguro que mañana con un poco de código en C++ podemos resolverlo. Te tengo informado de nuestros avances...

#using <mscorlib.dll>
using namespace System;
using namespace System::Text;

int main()
{
   String* unicodeString = S"This string contains the unicode character Pi(u03a0)";

   // Create two different encodings.
   Encoding * ascii = Encoding::ASCII;
   Encoding * unicode = Encoding::Unicode;

   // Convert the string into a Byte->Item[].
   Byte unicodeBytes[] = unicode -> GetBytes(unicodeString);

   // Perform the conversion from one encoding to the other.
   Byte asciiBytes[] = Encoding::Convert(unicode, ascii, unicodeBytes);

   // Convert the new Byte into[] a char and[] then into a string.
   // This is a slightly different approach to converting to illustrate
   // the use of GetCharCount/GetChars.
   Char asciiChars[] = new Char[ascii -> GetCharCount(asciiBytes, 0, asciiBytes -> Length)];
   ascii -> GetChars(asciiBytes, 0, asciiBytes->Length, asciiChars, 0);
   String* asciiString = new String(asciiChars);

   // Display the strings created before and after the conversion.
   Console::WriteLine(S"Original String*: {0}", unicodeString);
   Console::WriteLine(S"Ascii converted String*: {0}", asciiString);
}

Ya lo tenemos en poco más de un par horas lo publicamos en nuestro Blog

http://blog.tipesoft.com

Atentamente,

Jorge Hontoria Jiménez

Hola mila.ecoinformatica.

Ya hace tiempo hice una dll capaz de convertir ficheros entre los siguientes formatos

gb2312
ks_c_5601-1987
big5
iso-2022-jp
iso-2022-kr
euc-jp
euc-kr
macintosh
x-mac-japanese
x-mac-chinesetrad
x-mac-korean
x-mac-arabic
x-mac-hebrew
x-mac-greek
x-mac-cyrillic
x-mac-chinesesimp
x-mac-romanian
x-mac-ukrainian
x-mac-thai
x-mac-ce
x-mac-icelandic
x-mac-turkish
x-mac-croatian
asmo-708
dos-720
dos-862
ibm037
ibm437
ibm500
ibm737
ibm775
ibm850
ibm852
ibm855
ibm857
ibm00858
ibm860
ibm861
ibm863
ibm864
ibm865
cp866
ibm869
ibm870
cp875
koi8-r
koi8-u

 

también tendo desarrollados componentes para

- validación, validación contable y firma digital con facturae

- firma digital formato pdf

- firma digital formato XAdES-XL

 

Si te interesa, ponte en contacto conmigo.

 

Un saludo. Roberto Blasco.

 

 


Siento poner el ejempo con v6.x, pero es que todavía no he empezado con v7.

 

Un saludo. Roberto Blasco.

Hola roberto,
en el zip falta la lista de charsets, estoy muy interesado en la modificación de un txt ANSI a un txt unicode, ya que el ERP estnadar que utilzo con mis clientes ha modificado la codificación, y los traspasos que tengo hechos con velneo me han dejado de funcionar.
Ya me dirás alguna cosa
carlos moreno
carlos@infosistemes.net

Hola carlos.infosisteme

La lista de charsets la puedes ver si ejecutas el mapa en v6x, también lo puedes ver en este mismo hilo un par de post más atrás.

De todas formas esta dll ya la tenemos actualizada para que sea compatible en cualquier Sistema Operativo y no dependa de ActiveX., además de contener muchas más funciones de cifrado y firma electrónica (md2,md5, sha1, sha2 ... )

En breves sacaremos la dll completa con todas estas caracterísiticas. Para cualquier otra duda ponte en contacto conmigo o con Adelo adelo@adinf.es

Un saludo. Roberto Blasco.

P.D.
No pondría la mano en el fuego ... ¿pero no tiene ya v7 la funcionalidad de guardar el fichero en el charset (encoding) deseado?

_________________
Guadalajara - España
E-Mail: roberto.blasco.serrano@gmail.com
Skype: roberto.blasco.serrano
Teléfono: (+34)625653066 [Viber][WhatsApp]