Q:

Characters being replaced when deploying Apex classes

I just deployed a couple classes from my sandbox to production, and a specifically formatted character was replaced within my code. Dashes that are immediately surrounded by spaces in my sandbox class ended up as question marks in production. Has anyone ever seen something like this before?
Sandbox code:
 Map<String, Integer> regionCounts = new Map<String, Integer>{'International-APAC'=>0, 'International-EMEA'=>0, 'International – LATAM'=>0, 'North America – East'=>0, 'North America – West'=>0};

How it ended up in production:
Map<String, Integer> regionCounts = new Map<String, Integer>{'International-APAC'=>0, 'International-EMEA'=>0, 'International ? LATAM'=>0, 'North America ? East'=>0, 'North America ? West'=>0};

I'm aware I could just remove the spaces and update the values as they are used in our instance, but it's not quite that simple, and this obviously appears to be a bug of some kind. If you're writing comments and type out a dash in the above fashion, why should it get replaced as a question mark?
I also notice that after I save the code in edit mode, said dashes appear longer on the detail page, similar word processor auto formatting:

I've already filed a case with Salesforce, but we only have basic support and I have a feeling I'm going to get the run-around before they'll escalate to engineering, so thought I'd check to see if anyone has run into anything similar.

A:

Those dashes may look the same, but they aren't.
If I copy your code over to Notepad++ and highlight one of the later 3 dashes only the last 3 are highlighted as matching.

The quick answer would be to retype your dash characters so they are all the same. 
You are probably dealing with 3 possible characters:

a hyphen symbol - (Alt+45)
an em dash — (Alt+0151)
an en dash – (Alt+0150)

Telling them apart will mostly depending on your font etc...
Going back to your code. The characters for APAC and EMEA are hypens. LATAM, NA-East, and NA-West all have en dashes.
So why are your en dashes appearing as question marks? Most likely there is an encoding transition occurring at some point. I.e. transitioning from ISO-8859-1 to UTF-8 encoding.
Here is what happens in Notepad++ when I change the encoding from ANSI to UTF-8.
 

