Jason, you were spot-on with your original suggestion.  I had made
the change to my code, but had forgotten to JAR it up.  (After 20
years of programming, why do I still make mistakes like that?)<br>
<br>
Thanks a million.<br><br><div><span class="gmail_quote">On 5/20/05, <b class="gmail_sendername">Jason Hunter</b> &lt;<a href="mailto:jhunter@xquery.com">jhunter@xquery.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Well, just be aware the renderedDoc string there is going to be a<br>character String not a byte stream, so you can't look at it for<br>diagnostics about how the encoding's going.<br><br>The out.output(doc, output) looks like the proper way to send UTF-8
<br>characters.&nbsp;&nbsp;I don't recall if there were any issues with beta7 about<br>this.&nbsp;&nbsp;Beta7 was long, long ago.&nbsp;&nbsp;You may also want to specify the<br>encoding in the HTTP headers you're sending so the receiver will know<br>how to parse the bytes.
<br><br>-jh-<br><br>Chris Curvey wrote:<br><br>&gt; Thanks to Jason &amp; Paul for their responses.&nbsp;&nbsp;I tried Jason's suggestion<br>&gt; for my example, and it works great.&nbsp;&nbsp;(And I realize that this question<br>&gt; is increasingly off-topic, please forgive me.)
<br>&gt;<br>&gt; In my real-world problem, I'm not writing to System.out, I'm writing to<br>&gt; an output stream returned from an HttpsURLConnection.&nbsp;&nbsp;So I tried this:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Document doc = getXML();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; XMLOutputter out = new XMLOutputter();
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; out.setEncoding(&quot;UTF-8&quot;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; String renderedDoc = out.outputString(doc);<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; // Construct the request headers<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; setupHeaders(theConnection, renderedDoc.length());<br>
&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; // Send the request<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; OutputStream output = theConnection.getOutputStream();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; out.output(doc, output);<br>&gt;<br>&gt; I don't have access to the server on the other end of that connection,
<br>&gt; and the connection is encrypted, so I can't just put in a proxy server<br>&gt; to capture the stream to see what's really being sent.<br>&gt;<br>&gt; One more data point, which may or may not be important.&nbsp;&nbsp;I have to use
<br>&gt; the Beta-7 version of JDOM, because it's distributed as part of my app<br>&gt; server, and putting jdom 1.0 earlier in the classpath causes the app<br>&gt; server to choke.<br>&gt;<br>&gt; Many, many thanks for any help.
<br>&gt;<br>&gt; -Chris<br>&gt;<br>&gt; On 5/20/05, *Jason Hunter* &lt;<a href="mailto:jhunter@xquery.com">jhunter@xquery.com</a><br>&gt; &lt;mailto:<a href="mailto:jhunter@xquery.com">jhunter@xquery.com</a>&gt;&gt; wrote:
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; You're not actually outputting the file to a byte stream.&nbsp;&nbsp;You're<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; outputting it to a String, then printing the string using<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println().&nbsp;&nbsp;System.out is a PrintStream and per the
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; PrintStream Javadocs, &quot;All characters printed by a PrintStream are<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; converted into bytes using the platform's default character encoding.&quot;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Try this: out.output(doc, System.out
);<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; That way JDOM gets to control the bytes being output.<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; -jh-<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Chris Curvey wrote:<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; Hi all,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; I'm having a little trouble figuring out utf-8 encoding with
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; JDom.&nbsp;&nbsp;The<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; output from this sample program is returning a single hex value, \xc9<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; for an E-acute, but according to this page<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; <a href="http://www.fileformat.info/info/unicode/char/00c9/index.htm">
http://www.fileformat.info/info/unicode/char/00c9/index.htm</a>, the<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; UTF-8<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; encoding for E-acute should be a hex pair \xc3 and \x89.&nbsp;&nbsp;(\xc9<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; appears<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; to be right value for UTF-16.)
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; Any idea what I'm doing wrong?&nbsp;&nbsp;Or am I just misinterpreting<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; something?<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; import org.jdom.Document;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; import org.jdom.Element
;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; import org.jdom.output.XMLOutputter ;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; import org.jdom.output.Format;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; class JdomTest<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp; public static void main (String[] argv)
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Document doc = new Document();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Element element = new Element(&quot;foobar&quot;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; element.setText(&quot;CLOISONNÉ&quot;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; doc.addContent(element);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Format format = Format.getPrettyFormat();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format.setEncoding(&quot;UTF-8&quot;);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
XMLOutputter out = new XMLOutputter(format);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println(out.outputString(doc));<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; _______________________________________________<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt; To control your jdom-interest membership:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com">
http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com</a><br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<a href="http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com">http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com
</a>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; ------------------------------------------------------------------------<br>&gt;<br>&gt; _______________________________________________<br>&gt; To control your jdom-interest membership:
<br>&gt; <a href="http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com">http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com</a><br></blockquote></div><br>