Keith has mentioned two more strategies:
(3) Display an 8-bit header field as UTF-8 _if_ it is a valid UTF-8
(4) Display all the 8-bit header fields in a message as UTF-8 _if_
all the fields are valid UTF-8 strings _and_ the message contains
the following special header field: ...
Both of these are mis-interpretations. more precise descriptions:
3) if a phrase, comment, or *text field containing 8bit characters is
a valid UTF-8 string in its entirety, display it as UTF-8.
otherwise display it in a local character set.
4) if a message does not contain a special header field, display all
8bit characters in a local character set. if the message does
contain the special header field, follow rule 3.
note that #4 is just for comparison; I don't consider the extra
header field useful enough to be worth the trouble.
you have to make the display-as-UTF-8 vs. display-as-local decision
with smaller granularity than a header field, because each
phrase/address/comment in an address field may come from a different
source, using a different character set.