You have to use a fixed single byte encoding, like the one Jan suggested. UTF-8 is a non-fixed encoding, that means, in certain cases you need more then one byte to encode a single code point. This is one of this cases since you use negative numbers. (See the table in the wiki page about utf-8)
What was interesting for me was the fact, that after converting the second array to a string, the strings were identical but the underlying arrays where not.
But the point is, that the given character are not legit code points (or utf-8 representation of it) in which case the get replaced with the code point 65533, which in turn needs 3 bytes to be represented which explains the output:
[-17, -65, -67, -17, -65, -67, 1, -17, -65, -67]
The first two code points are represented as -17, -65, -67 and represent the illegal code point. The 1 represents a legit code point, so it "survived" the transformation and then last is again an illegal one.
[-17, -65, -67, -17, -65, -67, 1, -17, -65, -67].