Index: trunk/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java	(revision 7085)
+++ trunk/src/org/openstreetmap/josm/gui/io/DownloadFileTask.java	(revision 7089)
@@ -14,4 +14,5 @@
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.Enumeration;
 import java.util.zip.ZipEntry;
@@ -169,5 +170,5 @@
      */
     public static void unzipFileRecursively(File file, String dir) throws IOException {
-        try (ZipFile zf = new ZipFile(file)) {
+        try (ZipFile zf = new ZipFile(file, StandardCharsets.UTF_8)) {
             Enumeration<? extends ZipEntry> es = zf.entries();
             while (es.hasMoreElements()) {
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java	(revision 7085)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java	(revision 7089)
@@ -162,5 +162,5 @@
             File file = in.getFile();
             Utils.close(in);
-            zipFile = new ZipFile(file);
+            zipFile = new ZipFile(file, StandardCharsets.UTF_8);
             zipIcons = file;
             ZipEntry zipEntry = zipFile.getEntry(zipEntryPath);
Index: trunk/src/org/openstreetmap/josm/io/Compression.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/Compression.java	(revision 7085)
+++ trunk/src/org/openstreetmap/josm/io/Compression.java	(revision 7089)
@@ -1,7 +1,4 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io;
-
-import org.apache.tools.bzip2.CBZip2OutputStream;
-import org.openstreetmap.josm.tools.Utils;
 
 import java.io.File;
@@ -12,6 +9,10 @@
 import java.io.OutputStream;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.zip.GZIPOutputStream;
 import java.util.zip.ZipOutputStream;
+
+import org.apache.tools.bzip2.CBZip2OutputStream;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -103,5 +104,5 @@
                 return new GZIPOutputStream(out);
             case ZIP:
-                return new ZipOutputStream(out);
+                return new ZipOutputStream(out, StandardCharsets.UTF_8);
             case NONE:
             default:
Index: trunk/src/org/openstreetmap/josm/io/FileImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/FileImporter.java	(revision 7085)
+++ trunk/src/org/openstreetmap/josm/io/FileImporter.java	(revision 7089)
@@ -8,4 +8,5 @@
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.zip.GZIPInputStream;
@@ -162,5 +163,5 @@
             return null;
         }
-        ZipInputStream zis = new ZipInputStream(in);
+        ZipInputStream zis = new ZipInputStream(in, StandardCharsets.UTF_8);
         // Positions the stream at the beginning of first entry
         ZipEntry ze = zis.getNextEntry();
Index: trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java	(revision 7085)
+++ trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java	(revision 7089)
@@ -15,4 +15,5 @@
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -39,5 +40,5 @@
     /**
      * Constructs an input stream from a given filename, URL or internal resource.
-     * 
+     *
      * @param name can be:<ul>
      *  <li>relative or absolute file name</li>
@@ -54,5 +55,5 @@
     /**
      * Constructs an input stream from a given filename, URL or internal resource.
-     * 
+     *
      * @param name can be:<ul>
      *  <li>relative or absolute file name</li>
@@ -70,5 +71,5 @@
     /**
      * Constructs an input stream from a given filename, URL or internal resource.
-     * 
+     *
      * @param name can be:<ul>
      *  <li>relative or absolute file name</li>
@@ -86,5 +87,5 @@
     /**
      * Constructs an input stream from a given filename, URL or internal resource.
-     * 
+     *
      * @param name can be:<ul>
      *  <li>relative or absolute file name</li>
@@ -103,5 +104,5 @@
     /**
      * Constructs an input stream from a given filename, URL or internal resource.
-     * 
+     *
      * @param name can be:<ul>
      *  <li>relative or absolute file name</li>
@@ -121,5 +122,5 @@
     /**
      * Constructs an input stream from a given filename, URL or internal resource.
-     * 
+     *
      * @param name can be:<ul>
      *  <li>relative or absolute file name</li>
@@ -200,5 +201,5 @@
         Pair<String, InputStream> res = null;
         try {
-            ZipFile zipFile = new ZipFile(file);
+            ZipFile zipFile = new ZipFile(file, StandardCharsets.UTF_8);
             ZipEntry resentry = null;
             Enumeration<? extends ZipEntry> entries = zipFile.entries();
@@ -239,5 +240,5 @@
         cleanup(name, null);
     }
-    
+
     public static void cleanup(String name, String destDir) {
         URL url;
@@ -349,5 +350,5 @@
      * <p>
      * This can causes problems when downloading from certain GitHub URLs.
-     * 
+     *
      * @param downloadUrl The resource URL to download
      * @param httpAccept The accepted MIME types sent in the HTTP Accept header. Can be {@code null}
Index: trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 7085)
+++ trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 7089)
@@ -13,4 +13,5 @@
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -559,5 +560,5 @@
         if (zip) {
             try {
-                zipFile = new ZipFile(sessionFile);
+                zipFile = new ZipFile(sessionFile, StandardCharsets.UTF_8);
                 return getZipInputStream(zipFile);
             } catch (ZipException ze) {
Index: trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java	(revision 7085)
+++ trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java	(revision 7089)
@@ -249,5 +249,5 @@
     public void write(OutputStream out) throws IOException {
         if (zip) {
-            zipOut = new ZipOutputStream(new BufferedOutputStream(out));
+            zipOut = new ZipOutputStream(new BufferedOutputStream(out), StandardCharsets.UTF_8);
         }
         Document doc = createJosDocument(); // as side effect, files may be added to zipOut
Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 7085)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 7089)
@@ -598,5 +598,5 @@
 
     private static ImageResource getIfAvailableZip(String fullName, File archive, String inArchiveDir, ImageType type) {
-        try (ZipFile zipFile = new ZipFile(archive)) {
+        try (ZipFile zipFile = new ZipFile(archive, StandardCharsets.UTF_8)) {
             if (inArchiveDir == null || ".".equals(inArchiveDir)) {
                 inArchiveDir = "";
