Index: trunk/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java	(revision 6786)
+++ trunk/src/org/openstreetmap/josm/io/InvalidXmlCharacterFilter.java	(revision 6787)
@@ -36,4 +36,8 @@
     }
 
+    /**
+     * Constructs a new {@code InvalidXmlCharacterFilter} for the given Reader.
+     * @param reader The reader to filter
+     */
     public InvalidXmlCharacterFilter(Reader reader) {
         this.reader = reader;
@@ -60,5 +64,5 @@
         if (in < 0x20 && in >= 0 && INVALID_CHARS[in]) {
             if (firstWarning) {
-                Main.warn("Invalid xml character encountered.");
+                Main.warn("Invalid xml character encountered: '"+in+"'.");
                 firstWarning = false;
             }
@@ -67,4 +71,3 @@
         return in;
     }
-
 }
Index: trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java	(revision 6786)
+++ trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java	(revision 6787)
@@ -154,5 +154,6 @@
         }
 
-        @Override public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
+        @Override
+        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
             if (qName.equals("osm")) {
                 if (atts == null) {
@@ -215,5 +216,5 @@
             progressMonitor.beginTask("");
             progressMonitor.indeterminateSubTask(tr("Parsing list of changesets..."));
-            InputSource inputSource = new InputSource(new InputStreamReader(source, Utils.UTF_8));
+            InputSource inputSource = new InputSource(new InvalidXmlCharacterFilter(new InputStreamReader(source, Utils.UTF_8)));
             SAXParserFactory.newInstance().newSAXParser().parse(inputSource, parser.new Parser());
             return parser.getChangesets();
Index: trunk/src/org/openstreetmap/josm/io/OsmServerReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 6786)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 6787)
@@ -87,5 +87,5 @@
         return getInputStreamRaw(urlStr, progressMonitor, null);
     }
-    
+
     /**
      * Open a connection to the given url and return a reader on the input stream
@@ -151,7 +151,6 @@
                     String errorHeader = activeConnection.getHeaderField("Error");
                     StringBuilder errorBody = new StringBuilder();
-                    try
-                    {
-                        InputStream i = FixEncoding(activeConnection.getErrorStream(), encoding);
+                    try {
+                        InputStream i = fixEncoding(activeConnection.getErrorStream(), encoding);
                         if (i != null) {
                             BufferedReader in = new BufferedReader(new InputStreamReader(i));
@@ -170,5 +169,5 @@
                 }
 
-                return FixEncoding(new ProgressInputStream(activeConnection, progressMonitor), encoding);
+                return fixEncoding(new ProgressInputStream(activeConnection, progressMonitor), encoding);
             } catch (OsmTransferException e) {
                 throw e;
@@ -181,10 +180,8 @@
     }
 
-    private InputStream FixEncoding(InputStream stream, String encoding) throws IOException
-    {
+    private InputStream fixEncoding(InputStream stream, String encoding) throws IOException {
         if ("gzip".equalsIgnoreCase(encoding)) {
             stream = new GZIPInputStream(stream);
-        }
-        else if ("deflate".equalsIgnoreCase(encoding)) {
+        } else if ("deflate".equalsIgnoreCase(encoding)) {
             stream = new InflaterInputStream(stream, new Inflater(true));
         }
