2009-09-18 5 views
1

Tout cela est mélangé dans ma tête, et je ne peux pas envelopper ma tête autour d'elle.Excel to XML, question d'encodage

J'ai un fichier Excel que je dois analyser, utiliser Java et traduire en XML. En utilisant la librairie jExcel, je peux réaliser l'analyse, et l'application fait le bon travail, et mettre les bonnes cordes au bon endroit. Donc, pour la partie analyse, j'ai couvert ça.

Un problème survient lorsque j'essaie de transcoder le fichier en UTF-8. J'ai supposé que l'encodage pour le fichier Excel était ISO-8859-1, mais je ne suis pas exactement sûr si c'est le cas. Ensuite, j'utilise cette fonction avant d'ajouter ma chaîne au fichier xml.

private static String isoToUtf(String thingie){ 
     byte[] bytedata = thingie.getBytes() ; // Comes in ISO form, as the character set in the DB is set to ISO 

     Charset iso = Charset.forName("ISO-8859-1"); 
     CharsetDecoder isodecoder = iso.newDecoder(); 
     ByteBuffer bbuf = ByteBuffer.wrap(bytedata); 
     CharBuffer cbuf = isodecoder.decode(bbuf); // Decode from ISO to UTF-16 


     Charset utf8 = Charset.forName("UTF-8"); 
     CharsetEncoder utf8encoder = utf8.newEncoder(); 
     ByteBuffer outbuffer = utf8encoder.encode(cbuf); // Encode from UTF-16 to UTF-8 
     return new String(outbuffer.array(), "UTF-8"); 
    } 

D'une certaine manière, cependant, cela ne fonctionne pas. Je perds toujours quelques caractères à la corruption.

Aussi: Je dois absolument le faire de cette façon, il doit être affiché sur les intertubes éventuellement.

Le fichier Excel est ouvert à l'aide de la classe java.io.File.

+0

Comment exactement écrivez-vous le code XML? Si vous écrivez simplement des chaînes, alors je peux tout vous garantir que vous le faites mal à bien des égards, en particulier la conversion UTF-8. Lisez ceci pour plus d'informations: http://www.kdgregory.com/index.php?page=xml.builder – kdgregory

+0

Si vous lisez Excel je doute beaucoup que les chaînes soient dans un encodage fixe voir http: //sc.openoffice .org/excelfileformat.pdf – Mark

Répondre