UnicodeEncodeError:でハマる

Pythonのコードをテストする時はコマンドプロンプト上で実行結果を確認しながらの作業をしているんだけど、ある実行結果を表示する部分で

UnicodeEncodeError: 'cp932' codec can't encode character u'\u2014' in position 21: illegal multibyte sequence

というエラーで失敗する。

どうやら文字エンコーディングの関係だという事は分かったが、どうすれば解決するのか分からない。。。

そこで、色々調べていたら[Java]文字エンコーディング毎のUnicodeマッピングの違いについて。という場所にたどり着き、そこにあった表を引用させて貰うと、

字形 ¢ £ ¬ 〜(JIS X 0212)
マッピング Windows-31J,
MS932
\uFFE0 \uFFE1 \uFFE2 \u2225 \uFF0D \uFF5E \u2015
SJIS \u00A2 \u00A3 \u00AC \u2016 \u2212 \u301C \u2014
EUC-JP \u00A2 \u00A3 \u00AC \u2016 \u2212 \u301C \u2014 \uFF5E
EUCJP-OPEN \u00A2 \u00A3 \u00AC \u2016 \u2212 \u301C \u2014 \uFF5E

RSSをパースしているexpatの文字コードUTF-8なのだが、出力するコードページはcp932。
ここで、Unicodeマッピングの不整合が発生し、UnicodeEncodeError が起きていると推測。

そこで、解決策には心許ないがマッピングの異なる文字の場合、該当の文字を replace して出力という流れにすることで、出力時のエラーを回避することができた。

これは、コマンドプロンプト出力がcp932によるもので、

Web[EUC-JP] → Python[Unicode] → 出力[cp932]

この時に起こるようだ。
ネットでPythonの文字エンコーディングの問題を検索すると、かなりヒットする。みんなも同じ問題に直面したに違いない。
しかも、Python文字コードエンコーディング問題は結構「鬼門」らしい。
いいかげん、Unicodeで統一してほしい。
できなくとも、Unicodeマッピングは他のと統一してよ M$さん。--;

その場しのぎな解決コードです。すいません。

「―」用replace
output_ok_str = output_ng_str.replace(u"\u2014", u"\u2015").encode('cp932')

「¢、£、¬、‖、−、〜」についても同じようにreplaceを掛けてやる。