 <p>When you use <code>FileReader</code> and <code>FileWriter</code>, they will use the default encoding for your platform. That's almost <em>always</em> a bad idea.</p> <p>In your case, it seems that that encoding doesn't support <a href="http://www.fileformat.info/info/unicode/char/0092/index.htm" rel="nofollow">U+0092</a>, which is fairly reasonable given that it's a private use character - many encodings won't support that. I suspect you don't <em>actually</em> want <code>(char) 144</code> at all. If you really, really want to use that character, you should use an encoding which can encode all of Unicode - I'd recommend UTF-8.</p> <p>It's important to differentiate between text and binary, however - if you're really just interested in <em>bytes</em>, then you shouldn't use a reader or writer at all - use an <code>InputStream</code> and an <code>OutputStream</code>. Hex editors are typically byte-oriented rather than text-oriented, although they may provide a text view as well (ideally with configurable encoding). If you want to know the exact bytes in the file, you should definitely be using <code>FileInputStream</code>.</p>