<br><br><div class="gmail_quote">On Mon, Jul 26, 2010 at 9:13 PM, Min RK <span dir="ltr">&lt;<a href="mailto:benjaminrk@gmail.com">benjaminrk@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
<br>
On Jul 26, 2010, at 19:33, Fernando Perez &lt;<a href="http://fperez.net" target="_blank">fperez.net</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>&gt; wrote:<br>
<br>
&gt; Glad you worked it out, but I&#39;m worried about one thing: I don&#39;t<br>
&gt; believe you can send unicode strings as a buffer over the wire.  The<br>
&gt; reason is that the two interpreters at both ends of the connection<br>
&gt; could have been compiled with different internal unicode encodings.<br>
&gt; Python can be compiled to store unicode internally either as UCS-2 or<br>
&gt; UCS-4, you can check sys.maxunicode to find out how your particular<br>
&gt; build was made:<br>
&gt;<br>
&gt; <a href="http://www.python.org/dev/peps/pep-0100/" target="_blank">http://www.python.org/dev/peps/pep-0100/</a><br>
&gt; <a href="http://www.python.org/dev/peps/pep-0261/" target="_blank">http://www.python.org/dev/peps/pep-0261/</a><br>
&gt;<br>
&gt; If you send a unicode string as a buffer from a ucs2 python to a ucs4<br>
&gt; one, you&#39;ll get  a mess at the other end, I think.<br>
<br>
</div>I&#39;m not sure that is our concern. If buffers are being sent, then it&#39;s not zmq whose job it is to interpret that buffer, it&#39;s the user&#39;s receiving code.<br>
<br>
zmq only sends bytes, and for most objects, unicode included, that&#39;s what the buffer interface is. But sometimes a unicode object is really just a simple str in a unicode package, and when that&#39;s the case we interpret it as a string. Otherwise it&#39;s treated like all other objects - a black box that provides a buffer interface. It&#39;s up to the user sending the data to send it in a form that they can understand on the other side.<br>

<div class="im"><br></div></blockquote><div><br></div><div>Yes, I hadn&#39;t though about the fact that unicode objects are buffers as well.  But, we could raise a TypeError when a user tries to send a unicode object (str in python 3).  IOW, don&#39;t treat unicode as buffers and force them to encode/de ode.  Does this make sense or should we allow unicode to be sent as buffers.</div>
<div><br></div><div>Brian</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">
&gt; Minor note:<br>
&gt; On Mon, Jul 26, 2010 at 6:43 PM, Min RK &lt;<a href="mailto:benjaminrk@gmail.com">benjaminrk@gmail.com</a>&gt; wrote:<br>
&gt;&gt; isinstance(s,(str,unicode))<br>
&gt;<br>
&gt; this is equiv. to: isinstance(s, basestring)<br>
&gt;<br>
<br>
</div>ah, thanks, I hadn&#39;t seen that one. I&#39;ll use it.<br>
<br>
&gt;<br>
&gt;<br>
&gt; Cheers,<br>
&gt;<br>
&gt; f<br>
<br>
your points have further clarified that I was mistaken to attempt to support unicode strings. We support basic strings and raw buffers. When faced with a unicode object, we effectively (but not literally) do:<br>
try: send(str(u))<br>
except: send(buffer(u))</blockquote></div><br><br clear="all"><br>-- <br>Brian E. Granger, Ph.D.<br>Assistant Professor of Physics<br>Cal Poly State University, San Luis Obispo<br><a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a><br>
<a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>