I tried %20 along with a lot of other things and was the only
thing that worked in all places -- the web, Twitter clients, and SMS
messages to cell phones. Other than this problem, it has worked great
for nine months. If Twitter has made changes such that %20 will now
work where it didn't before, I'd be happy to switch. But, my guess is
that this bug would apply equally well to the %20s.
First of all, %20 is a regular space, URL-encoded. The non-breaking space is Unicode codepoint 160
(A0h). You can encode the non-breaking space in XML as " " and in JSON as
Secondly, I don't know what you are doing with the non-breaking spaces, but
they're unlikely to work as you expect them to. My Twitter client replaces all
runs of consecutive whitespace (including newlines, tabs,non-breaking spaces,
and more exotic whitespace) as a single normal space, and I suspect that many
apps will do the same. Attempts to control the layout of a tweet are futile at
worst and annoying at best. I am sure you are trying to format tweets in a
helpful, non-annoying, cool way, but your formatting is unlikely to survive
given the anti-annoying-people countermeasures that good clients have in place.