Well, here's what happens, as far as I can tell. If I call string.encode('utf-8') or whatever, then if I paste into a different application it comes out garbled - I guess the system clipboard isn't utf-8? So somehow I need to be detecting what the system clipboard's encoding is, or convince the clipboard to be utf-8, or I don't know what.
But! If I use the same clipboard module from anywhere that's not Sublime, I don't need to call string.encode at all—it just works (except in Sublime Text, where it flips out when I paste - "can't decode to ascii" by default, or garbles it if I try to decode as utf-8).
A lot of Googling and messing around with the code and I have gotten no further.