> 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);
}
}
}