Это все смешалось в моей голове, и я не могу обернуть голову вокруг этого.
У меня есть файл Excel, который я должен проанализировать, используя Java, и перевести на XML. Используя библиотеку jExcel, я могу выполнить синтаксический анализ, и приложение выполняет правильную работу и размещает правильные строки в нужном месте. Итак, что касается разбора, я покрыл это.
Проблема возникает, когда я пытаюсь перекодировать файл в UTF-8.
Я предположил, что кодировкой для файла Excel было ISO-8859-1, но я не совсем уверен, так ли это. Затем я использую эту функцию перед добавлением моей строки в 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");
}
Но почему-то это не работает. Я все еще теряю некоторых персонажей из-за коррупции.
Кроме того: я абсолютно обязан сделать это таким образом, это должно в конечном итоге отображаться на трубках.
Файл Excel открывается с использованием класса java.io.File.