There may not be anything wrong with what you're seeing. You may not need to mangle the $_POST with htmlentities corrections or otherwise. It could be that you're looking at a barebones browser output.
In case you're debugging this by spitting it out with something like
print_r( $_POST ); die;, make sure that somewhere above it in your page you have a meta line setting your character encoding to UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
That will ensure that the smart characters (presumably pasted from somewhere) render properly on screen.
Completely unrelated: Excellent book, BTW. Love the beginning scene with gaunt sailors hoarding their piles of bones.