文字列の文字コード

これはどうすべきなのでしょうか。
今はソースの文字を何の変換もせずにそのまま保持しています。UCS2で保持するのが今の主流のようですが、気が乗りません。
理由は次の通りです。

  • コンソールではUCS2を表示できない環境がある。
  • 文字列を保存するとき、読み込むときバイトオーダーの問題がある。
  • C++でL"ああああ" がUCS2だと規定されていない。なのでC++で文字列リテラルを書きづらくなる。

どうしたものか。