VC++ 2003 CFlie.OpenとVistaのJis2004と不都合

[戻る]
よすけ 2007/07/09(月) 17:54:12
VC++ 2003で以下のコードをコンパイルしました:

    CFile     fp;
    int ret = fp.Open( name, CFile::modeRead)

    if ( !ret ) return -1; /* ファイル開けません */

コンパイルしたバイナリをWindows XPで問題なく実行できますが、
Windows Vistaで実行して、

ファイル名 name = "叱る" ( JIS 2004の文字コード)にすると !ret = 1となってしま
います。

ファイル名 nameがJIS2004の文字を含む場合,Vistaにも, XPにも対応させたい,つまり、
fp.Openできる)のですが、
どうすればよいでしょうか?

よろしくお願いします。

yoh2 [E-Mail] 2007/07/10(火) 01:00:06
TCHAR周りの設定が、UNICODEではなくMBCSになっていたりしませんか?
MBCS (要するにCP932) では、JIS 2004の"叱"を表現できないのでエラーになると思いま
す。

なお、微妙に環境が違いますが、VC++ 2005 Expressで (MFCは使えないので) 
CreateFile()を
使ってみたところ、Vista(64ビット版)で"叱る.txt" (JIS 2004の文字コード)が開けまし
た。

よすけ 2007/07/10(火) 18:02:57
yoh2さん、

返事をありがとうございます。

VC++2005がjis2004をサポートするかもしれないですけど、バックワード互換性を考えた
うえでサポートさせないことを決めました。

また別件でよろしくお願いします^^

古いスレッドには追加発言できません。