The diamond shaped character is U+FFFD REPLACEMENT CHARACTER, and browsers may display it to indicate character-level data error (bytes that do not represent any character in the currently applied character encoding).
Your first case is a page declared to be UTF-8 encoded, but it is in fact windows-1252 encoded. If you manually tell Firefox to apply that encoding (View > Encoding, West European (Windows), or something like that), you will see the characters as intended, as “smart quotes.” On the authoring side, the issue should be fixed e.g. by changing the
meta tag to declare windows-1252 and not utf-8.
The second case is similar and can be fixed similarly in a browser; in this case, the page contains em dashes (—) in windows-1252 encoding. On the authoring side, this could be more difficult, since here the encoding is declared in HTTP headers and cannot be overridden in the document itself; web server admin action might be needed.