diff --git a/src/main/org/apache/tools/ant/XmlLogger.java b/src/main/org/apache/tools/ant/XmlLogger.java
index 96b9ea244..d9fb3f214 100644
--- a/src/main/org/apache/tools/ant/XmlLogger.java
+++ b/src/main/org/apache/tools/ant/XmlLogger.java
@@ -132,8 +132,12 @@ public class XmlLogger implements BuildListener {
if (outFilename == null) {
outFilename = "log.xml";
}
-
- Writer out = new FileWriter(outFilename);
+
+ // specify output in UTF8 otherwise accented characters will blow
+ // up everything
+ Writer out =
+ new OutputStreamWriter(new FileOutputStream(outFilename),
+ "UTF8");
out.write("\n\n");
(new DOMElementWriter()).write(buildElement, out, 0, "\t");
out.flush();
diff --git a/src/main/org/apache/tools/ant/util/DOMElementWriter.java b/src/main/org/apache/tools/ant/util/DOMElementWriter.java
index cc44790ab..2b520e8c8 100644
--- a/src/main/org/apache/tools/ant/util/DOMElementWriter.java
+++ b/src/main/org/apache/tools/ant/util/DOMElementWriter.java
@@ -67,7 +67,7 @@ import org.w3c.dom.*;
*
* @author The original author of XmlLogger
* @author Stefan Bodewig
- * @author Stephane Bailliez
+ * @author Stephane Bailliez
*/
public class DOMElementWriter {
@@ -131,6 +131,9 @@ public class DOMElementWriter {
break;
case Node.TEXT_NODE:
+ out.write(encode(child.getNodeValue()));
+ break;
+
case Node.CDATA_SECTION_NODE:
out.write("");
out.write(lSep);
+ out.flush();
}
/**
- * Escape <, & and " as their entities.
+ * Escape <, > & ' and " as their entities.
*/
public String encode(String value) {
sb.setLength(0);
@@ -183,6 +187,12 @@ public class DOMElementWriter {
case '<':
sb.append("<");
break;
+ case '>':
+ sb.append(">");
+ break;
+ case '\'':
+ sb.append("'");
+ break;
case '\"':
sb.append(""");
break;