Index: /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 1524)
+++ /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 1525)
@@ -160,5 +160,5 @@
                     copy(file, tmpFile);
                 }
-                OsmWriter w = new OsmWriter(new PrintWriter(new FileOutputStream(file)), false, layer.data.version);
+                OsmWriter w = new OsmWriter(new PrintWriter(file, "UTF-8"), false, layer.data.version);
                 w.header();
                 w.writeDataSources(layer.data);
Index: /trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 1524)
+++ /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 1525)
@@ -12,4 +12,5 @@
 import java.io.PrintWriter;
 import java.io.StringReader;
+import java.io.StringWriter;
 import java.net.ConnectException;
 import java.net.HttpURLConnection;
@@ -77,6 +78,6 @@
     private boolean initialized = false;
     
-    private ByteArrayOutputStream bao = new ByteArrayOutputStream();
-    private OsmWriter osmWriter = new OsmWriter(new PrintWriter(bao), true, null);
+    private StringWriter swriter = new StringWriter();
+    private OsmWriter osmWriter = new OsmWriter(new PrintWriter(swriter), true, null);
 
     /**
@@ -159,5 +160,5 @@
      */
     private String toXml(OsmPrimitive o, boolean addBody) {
-        bao.reset();
+        swriter.getBuffer().setLength(0);
         osmWriter.setWithBody(addBody);
         osmWriter.header();
@@ -165,5 +166,5 @@
         osmWriter.footer();
         osmWriter.out.flush();
-        return bao.toString();
+        return swriter.toString();
     }
     
@@ -365,5 +366,5 @@
                     activeConnection.setDoOutput(true);
                     OutputStream out = activeConnection.getOutputStream();
-                    BufferedWriter bwr = new BufferedWriter(new OutputStreamWriter(out));
+                    BufferedWriter bwr = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
                     bwr.write(requestBody);
                     bwr.flush();
