get_the_title()
is treated with wptexturize()
by default. That changes the dash.
To fix it remove the filter and reapply it if it was really set:
$wptexturize = remove_filter( 'the_title', 'wptexturize' );
$title = get_the_title();
if ( $wptexturize )
add_filter( 'the_title', 'wptexturize' );