Only in xmlrpc-1.2-b1/src/java/org/apache/xmlrpc: p diff -ru xmlrpc-1.2-b1.orig/src/java/org/apache/xmlrpc/XmlRpc.java xmlrpc-1.2-b1/src/java/org/apache/xmlrpc/XmlRpc.java --- xmlrpc-1.2-b1.orig/src/java/org/apache/xmlrpc/XmlRpc.java 2003-02-19 22:37:12.000000000 +0100 +++ xmlrpc-1.2-b1/src/java/org/apache/xmlrpc/XmlRpc.java 2005-02-05 00:56:39.396240456 +0100 @@ -184,7 +184,7 @@ * Java's name for the encoding we're using. Defaults to * ISO8859_1. */ - static String encoding = XmlWriter.ISO8859_1; + static String encoding = XmlWriter.UTF8; private TypeFactory typeFactory; diff -ru xmlrpc-1.2-b1.orig/src/java/org/apache/xmlrpc/XmlWriter.java xmlrpc-1.2-b1/src/java/org/apache/xmlrpc/XmlWriter.java --- xmlrpc-1.2-b1.orig/src/java/org/apache/xmlrpc/XmlWriter.java 2003-02-19 22:37:12.000000000 +0100 +++ xmlrpc-1.2-b1/src/java/org/apache/xmlrpc/XmlWriter.java 2005-02-05 01:00:20.082691016 +0100 @@ -332,16 +332,11 @@ write(AMPERSAND_ENTITY); break; default: - if (c < 0x20 || c > 0xff) + if (isInvalidXmlChar(c)) { - // Though the XML-RPC spec allows any ASCII - // characters except '<' and '&', the XML spec - // does not allow this range of characters, - // resulting in a parse error from most XML - // parsers. - throw new XmlRpcException(0, "Invalid character data " + - "corresponding to XML entity &#" + - String.valueOf((int) c) + ';'); + write("&#"); + write(String.valueOf((int)c)); + write(';'); } else { @@ -350,4 +345,11 @@ } } } + + private boolean isInvalidXmlChar(char c) + { + if (c == 0x09 || c == 0x0A || c == 0x0D) + return false; + return c < 0x20 || (c > 0xD7FF && c < 0xE000) || c > 0xFFFD; + } }