通知
すべてクリア
Topic starter
2007年7月9日 5:54 PM
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できる)のですが、
どうすればよいでしょうか?
よろしくお願いします。
2007年7月10日 1:00 AM
TCHAR周りの設定が、UNICODEではなくMBCSになっていたりしませんか?
MBCS (要するにCP932) では、JIS 2004の叱を表現できないのでエラーになると思いま
す。
なお、微妙に環境が違いますが、VC++ 2005 Expressで (MFCは使えないので)
CreateFile()を
使ってみたところ、Vista(64ビット版)で叱る.txt (JIS 2004の文字コード)が開けまし
た。
Topic starter
2007年7月10日 6:02 PM
yoh2さん、
返事をありがとうございます。
VC++2005がjis2004をサポートするかもしれないですけど、バックワード互換性を考えた
うえでサポートさせないことを決めました。
また別件でよろしくお願いします^^