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.
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.
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.
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...
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.
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); }
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
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?