diff --git a/commons/src/main/java/org/archive/spring/ConfigFile.java b/commons/src/main/java/org/archive/spring/ConfigFile.java index a0c605f6..5058120e 100644 --- a/commons/src/main/java/org/archive/spring/ConfigFile.java +++ b/commons/src/main/java/org/archive/spring/ConfigFile.java @@ -18,9 +18,11 @@ */ package org.archive.spring; -import java.io.FileReader; -import java.io.FileWriter; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; @@ -46,7 +48,9 @@ public class ConfigFile extends ConfigPath implements ReadSource, WriteTarget { if(!getFile().exists()) { getFile().createNewFile(); } - return new FileReader(getFile()); + return new InputStreamReader( + new FileInputStream(getFile()), + "UTF-8"); } catch (IOException e) { throw new RuntimeException(e); } @@ -58,7 +62,9 @@ public class ConfigFile extends ConfigPath implements ReadSource, WriteTarget { public Writer obtainWriter(boolean append) { try { - return new FileWriter(getFile(), append); + return new OutputStreamWriter( + new FileOutputStream(getFile(), append), + "UTF-8"); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/engine/src/main/java/org/archive/crawler/restlet/EnhDirectoryResource.java b/engine/src/main/java/org/archive/crawler/restlet/EnhDirectoryResource.java index df4ef750..448c29a3 100644 --- a/engine/src/main/java/org/archive/crawler/restlet/EnhDirectoryResource.java +++ b/engine/src/main/java/org/archive/crawler/restlet/EnhDirectoryResource.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.ListIterator; import org.apache.commons.io.FileUtils; +import org.restlet.data.CharacterSet; import org.restlet.data.Form; import org.restlet.data.Reference; import org.restlet.data.Request; @@ -81,6 +82,9 @@ public class EnhDirectoryResource extends DirectoryResource { File file = ((FileRepresentation)v).getFile(); if(getEnhDirectory().allowsEdit(file)) { iter.remove(); + // any editable file for our purposes should + // be XML/UTF-8 + v.setCharacterSet(CharacterSet.UTF_8); iter.add(new EditRepresentation((FileRepresentation)v,this)); }; } @@ -125,7 +129,7 @@ public class EnhDirectoryResource extends DirectoryResource { EditRepresentation er = (EditRepresentation) getVariants().get(0); File file = er.getFileRepresentation().getFile(); try { - FileUtils.writeStringToFile(file, newContents); + FileUtils.writeStringToFile(file, newContents,"UTF-8"); Flash.addFlash(getResponse(), "file updated"); } catch (IOException e) { // TODO report error somehow