>>275 言葉自体が曖昧。
まず、Windowsは内部ではファイル名をutf-16で管理してる。
そして、fopenは実装依存。とりあえずVC++のfopenで、日本語ロケールでの使用を想定する。
つまりfopenはcp932(sjisのMS拡張と思ってよし)でエンコードされたchar*をとって、内部でutf-16に変換してる。
そういう意味で、全ファイル名がUNICODE文字列であって、fopenではcp932を経由してUNICODE文字列のファイル名を開ける、と言える。
あるいは、cp932入れるべきところに強引にUNICODE文字列をねじこんで、
それをWindowsが内部でcp932のつもりでutf-16に変換したもの、という意味なら。
まず、それがファイル名として妥当なものになるのか(つまり、そんなファイル作れない。ないものは読めない)というのがひとつ。
次に、UNICODE文字列とはutf8か16か32か(あるいは7か...)。
16,32ならNULを含むことになって作れないだろうなぁ。
8なら、sjisのバックスラッシュ問題にコンパイラが対応してるか、ユーザが小細工してるか。
それによって別の文字になるので調整しないといけないが、うまくすれば読める。