The same experiment with cat in place of textmate works fine, so it's textmate that is buggy.
According to "od -x1", textmate is writing:
0000000 ed a0 b5 ed b6 99 ed a0 b5 ed b6 8a ed a0 b5 ed 0000020 b6 98 ed a0 b5 ed b6 99
It turns out that this is such a common mistake that there's even a name for this encoding, CESU-8: http://en.wikipedia.org/wiki/CESU-8