открытие файла xls и сохранение его в виде файла tsv с использованием преобразования java и UTF-16LE в UTF-8 - PullRequest
1 голос
/ 20 февраля 2012

У меня два вопроса:

Есть ли способ, с помощью которого мы можем открыть файл xls и сохранить его как файл tsv через Java? РЕДАКТИРОВАТЬ: Или есть способ, с помощью которого мы можем преобразовать файл xls в файл tsv через Java?

Есть ли способ, которым мы можем конвертировать файл UTF-16LE в UTF-8, используя Java?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

У меня есть два вопроса:

В StackOverflow вы должны разделить это на два разных вопроса ...

Я отвечу на ваш второй вопрос:

Есть ли способ, которым мы можем конвертировать файл UTF-16LE в UTF-8, используя Java?

Да, конечно.И есть несколько способов.

Обычно вы хотите прочитать входной файл, указав кодировку ввода (UTF-16LE), а затем записать файл, указав кодировку вывода (UTF-8).

Скажем, у вас есть какой-то файл в кодировке UTF-16LE:

... $ file testInput.txt 
testInput.txt: Little-endian UTF-16 Unicode character data

В таком случае вы можете сделать что-то подобное в Java (это всего лишь пример: вы захотите заполнить пропущенный код обработки исключений, а может и нет).поместите последний символ новой строки в конце, возможно, отмените спецификацию, если таковая имеется, и т. д.):

    FileInputStream fis = new FileInputStream(new File("/home/.../testInput.txt") );
    InputStreamReader isr = new InputStreamReader( fis, Charset.forName("UTF-16LE") );
    BufferedReader br = new BufferedReader( isr );
    FileOutputStream fos = new FileOutputStream(new File("/home/.../testOutput.txt"));
    OutputStreamWriter osw = new OutputStreamWriter( fos, Charset.forName("UTF-8") );
    BufferedWriter bw = new BufferedWriter( osw );
    String line = null;
    while ( (line = br.readLine()) != null ) {
        bw.write(line);
        bw.newLine();   // will add an unnecessary newline at the end of your file, fix this
    }
    bw.flush();
    // take care of closing the streams here etc.

Это создаст файл в кодировке UTF-8.

$ file testOutput.txt 
testOutput.txt: UTF-8 Unicode (with BOM) text

Спецификация можетотчетливо видно, например, с помощью hexdump :

 $ hexdump testOutput.txt -C
00000000  ef bb bf ... (snip)

Спецификация кодируется в трех байтах в UTF-8 (ef bb fb), а в двух байтах в UTF-16.В UTF16-LE спецификация выглядит следующим образом:

$ hexdump testInput.txt -C
00000000  ff fe ... (snip)

Обратите внимание, что файлы в кодировке UTF-8 могут иметь или не иметь (оба полностью действительны) иметь «спецификацию» (маску порядка байтов).Спецификация в файле UTF-8 не так уж и глупа: вас не заботит порядок следования байтов, но это может помочь быстро идентифицировать текстовый файл как кодированный в UTF-8.Файлы UTF-8 с спецификацией являются полностью законными в соответствии со спецификациями Unicode, и, следовательно, читатели, неспособные работать с файлами UTF-8, начинающимися с спецификации, не работают.Просто и просто.

Если по какой-либо причине вы работаете со сломанными считывателями UTF-8, которые не могут справиться с спецификациями, вы можете удалить спецификацию из первой строки перед записью на диск.

Больше информации о спецификациях здесь:

http://unicode.org/faq/utf_bom.html

0 голосов
/ 20 февраля 2012

Существует библиотека под названием jexcelapi , которая позволяет открывать / редактировать / сохранять файлы .xls. После прочтения файла .xls не составит труда написать что-то, что вывело бы его в виде .tsv.

...