Конвертировать файл с известной кодировкой в ​​UTF-8 - PullRequest
4 голосов
/ 08 декабря 2010

Мне нужно преобразовать текстовый файл в строку, которую, наконец, я должен поместить в качестве входного параметра (тип InputStream) в IFile.create (Eclipse). Ищите пример или как это сделать, но до сих пор не можете понять ... нужна ваша помощь!

только для тестирования, я попытался преобразовать оригинальный текстовый файл в кодировку UTF-8 с этим кодом

FileInputStream fis = new FileInputStream(FilePath);
InputStreamReader isr = new InputStreamReader(fis);

Reader in = new BufferedReader(isr);
StringBuffer buffer = new StringBuffer();

int ch;
while ((ch = in.read()) > -1) {
    buffer.append((char)ch);
}
in.close();


FileOutputStream fos = new FileOutputStream(FilePath+".test.txt");
Writer out = new OutputStreamWriter(fos, "UTF8");
out.write(buffer.toString());
out.close();

, но даже несмотря на то, что конечный файл * .test.txt имеет кодировку UTF-8, символы внутри повреждены.

1 Ответ

9 голосов
/ 08 декабря 2010

Необходимо указать кодировку InputStreamReader с помощью параметра Charset.

                                    // ↓ whatever the input's encoding is
Charset inputCharset = Charset.forName("ISO-8859-1");
InputStreamReader isr = new InputStreamReader(fis, inputCharset));

Это также работает:

InputStreamReader isr = new InputStreamReader(fis, "ISO-8859-1"));

См. Также:

Ищите, где я нашел все эти ссылки: https://stackoverflow.com/search?q=java+detect+encoding


Вы можете получить кодировку по умолчанию - которая идет от системы, на которой работает JVM -во время выполнения через Charset.defaultCharset().

...