>  Does we need another patch ?

1. Try to insert this code before creating XmlRpcClient:

  XmlRpc.setEncoding("UTF8");

2. Otherwise, how about this patch (string-utf8.diff)?
   ( Note: This patch also requires XmlRpc.setEncoding("UTF8") )
-- 
Shirai,Kaoru <[EMAIL PROTECTED]>
Korinkan Ltd. - http://www.korinkan.co.jp/
Index: src/java/org/apache/xmlrpc/XmlRpc.java
===================================================================
RCS file: /home/cvspublic/ws-xmlrpc/src/java/org/apache/xmlrpc/XmlRpc.java,v
retrieving revision 1.37
diff -u -r1.37 XmlRpc.java
--- src/java/org/apache/xmlrpc/XmlRpc.java      30 Jun 2004 06:11:55 -0000      1.37
+++ src/java/org/apache/xmlrpc/XmlRpc.java      7 Oct 2004 01:31:24 -0000
@@ -56,6 +56,7 @@
  */
 
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.Hashtable;
 import java.util.Stack;
 import java.util.Vector;
@@ -387,6 +388,7 @@
      */
     synchronized void parse(InputStream is) throws Exception
     {
+        InputStreamReader reader = new InputStreamReader(is, "UTF8");
         // reset values (XmlRpc objects are reusable)
         errorLevel = NONE;
         errorMsg = null;
@@ -440,7 +442,7 @@
         }
         try
         {
-            parser.parse(new InputSource (is));
+            parser.parse(new InputSource (reader));
         }
         finally
         {
Index: src/java/org/apache/xmlrpc/XmlWriter.java
===================================================================
RCS file: /home/cvspublic/ws-xmlrpc/src/java/org/apache/xmlrpc/XmlWriter.java,v
retrieving revision 1.11
diff -u -r1.11 XmlWriter.java
--- src/java/org/apache/xmlrpc/XmlWriter.java   30 Jun 2004 18:46:58 -0000      1.11
+++ src/java/org/apache/xmlrpc/XmlWriter.java   7 Oct 2004 01:31:24 -0000
@@ -335,11 +335,6 @@
             char c = text.charAt (i);
             switch (c)
             {
-            case '\t':
-            case '\r':
-            case '\n':
-                write(c);
-                break;
             case '<':
                 write(LESS_THAN_ENTITY);
                 break;
@@ -350,8 +345,16 @@
                 write(AMPERSAND_ENTITY);
                 break;
             default:
-                if (c < 0x20 || c > 0xff)
-                {
+                boolean badChar = false;
+                switch (c) {
+                case '\t':
+                case '\r':
+                case '\n':
+                    break;
+                default:
+                    badChar = (c < 0x20);
+                }
+                if (badChar) {
                     // Though the XML-RPC spec allows any ASCII
                     // characters except '<' and '&', the XML spec
                     // does not allow this range of characters,
@@ -361,10 +364,7 @@
                                               "corresponding to XML entity &#" +
                                               String.valueOf((int) c) + ';', null);
                 }
-                else
-                {
-                    write(c);
-                }
+                write(c);
             }
         }
     }

Reply via email to