Index: trunk/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java	(revision 3083)
+++ trunk/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java	(revision 3084)
@@ -7,8 +7,9 @@
 import java.io.ByteArrayInputStream;
 import java.io.File;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
@@ -121,4 +122,5 @@
                 connection.setRequestProperty("User-Agent",Version.getInstance().getAgentString());
                 connection.setRequestProperty("Host", url.getHost());
+                connection.setRequestProperty("Accept-Charset", "utf-8");
             }
             in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
@@ -169,8 +171,6 @@
             File cacheFile = new File(pluginDir, createSiteCacheFileName(site));
             getProgressMonitor().subTask(tr("Writing plugin list to local cache ''{0}''", cacheFile.toString()));
-            writer = new PrintWriter(
-                    new FileWriter(cacheFile)
-            );
-            writer.print(list);
+            writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(cacheFile), "utf-8"));
+            writer.write(list);
         } catch(IOException e) {
             // just failed to write the cache file. No big deal, but log the exception anyway
