Я пытаюсь записать файл, содержащий некоторые немецкие символы, на диск и прочитать его с использованием кодировки Windows-1252
. Я не понимаю, почему, но мой результат выглядит следующим образом:Чтение и запись файла с окнами-1252
<title>W�hrend und im Anschluss an die Exkursion stehen Ihnen die Ansprechpartner f�r O-T�ne</title>
<p>Die Themen im �berblick</p>
Любые мысли? Вот мой код. Вам понадобится пружинный ядро и commons-io для запуска.
private static void write(String fileName, Charset charset) throws IOException {
String html = "<html xmlns=\"http://www.w3.org/1999/xhtml\">" +
"<head>" +
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">" +
"<title>Während und im Anschluss an die Exkursion stehen Ihnen die Ansprechpartner für O-Töne</title>" +
"</head>" +
"<body>" +
"<p>Die Themen im Überblick</p>" +
"</body>" +
"</html>";
byte[] bytes = html.getBytes(charset);
FileOutputStream outputStream = new FileOutputStream(fileName);
OutputStreamWriter writer = new OutputStreamWriter(outputStream, charset);
IOUtils.write(bytes, writer);
writer.close();
outputStream.close();
}
private static void read(String file, Charset windowsCharset) throws IOException {
ClassPathResource pathResource = new ClassPathResource(file);
String string = IOUtils.toString(pathResource.getInputStream(), windowsCharset);
System.out.println(string);
}
public static void main(String[] args) throws IOException {
Charset windowsCharset = Charset.forName("windows-1252");
String file = "test.txt";
write(file, windowsCharset);
read(file, windowsCharset);
}
Кажется не работает. Мой метод записи: 'byte [] bytes = html.getBytes (charset); FileOutputStream output = new FileOutputStream (имя_файла); IOUtils.write (байты, вывод); output.close(); } ' – Robert
Я проверил его и получил правильный результат из вашего метода чтения! – Seelenvirtuose
Вы правы, это работает. Это была проблема IDE, что мой выходной файл не был скопирован в целевой каталог, а на пути к классу у меня был старый файл. – Robert