マルチバイト表現をシステムコールで渡すものが殆んどです。使っているシステムは、本当に山のようにあります。あると決めても何も解決しないでしょうね。現行システムとの互換性問題が増えるだけじゃないでしょうか。rigarashwchar_tの型は処理系依存、c++0xのuchar{16,32}_tは{2,4}byteになっているはずです。コンソールの表示のエンコーディングが全部違うなんてことも普通にありうるので、ただのバイト列なのか、文字列として変換すべきなのかややこしいですよね。えぴさんの話とsodaさんの話でよく理解できました。(^^;;;善かれと信じていろいろ突っ込むと余計にひっ掻き回すんちゃうかぁ?char16_t/char32_tに一抹の不安を覚えるます。ひろゆきんー、そもそもUnicodeのサポートというのも少々疑問が残るところですし・・・。sample(u8"日本語");とあったら、sampleはどのようなバイト列になるべきなのでしょうか。VCだと変換されたものが入ってくれちゃうでしょうけども。ココロやとおもうです。UTF8で"日本語"って書いてあるんでないかしら。rigarashそれは、コンパイラがu8"日本語"の文字コードを知っているという前提ですよね。したときどう振舞うかは処理系次第でしょうねぇ。特定のencodingだと思い込んで結果バケバケかもしんないし。自分のコードをUTF-8にしていても、u8"日本語"リテラルがバイナリ生ストリームで化けることもありうる、と。επιστημηんー...あちこちのライブラリを持ち寄ったときに問題を起こしそう。香ばしい匂いが漂ってます。utf8とか入れるんかなぁ。rigarash今N2800を読みなおしてました。10646に変換する、ということになるのでしょう。通りすがりソース中にはASCII以外書かないので、少なくともリテラルの文字コードで困ったことはないなあ。Windowsで日本語が必要ならリソースを使うべきケースがほとんどだし。パス名の文字コードも、パス名自体に移植性がないので標準規格のレベルで気にしてもしょうがない。