VC2005で実行するとパスが文字化けします。 – プログラミング – Home

VC2005で実行するとパスが文字化け...
 
通知
すべてクリア

[解決済] VC2005で実行するとパスが文字化けします。


KENZI
 KENZI
(@KENZI)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

VC2005への移行作業を今やっているところなんですが、
質問があります。
環境はWinXP、2003、MFCです。
2005で実行してみたところ、
日本語の入っているパスだと、文字化けしていてファイルを認識してくれません。
英語のみですとファイルを認識してくれます。
適切な対処方法を教えて下さい。
お願いします。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

問題のコードを提示してもらえませんか?
これだけでは、憶測でしか回答できません。

憶測だけの回答で、質問者を惑わすのはあまりよくないですから。

> 環境はWinXP、2003、MFCです。
> 2005で実行してみたところ、
2005で実行とは?2003じゃないの?

移行とは 2003 -> 2005 で、2005でコンパイルしなおしているということですよね?
その際に出力されたWarningやError等があったらそれも提示してください。
(2003と2005ではデフォルトのコンパイルオプションが微妙に違います)


返信引用
KENZI
 KENZI
(@KENZI)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

簡単な説明ですみませんでした。
2005でコンパイルをしなおしています。
Warningは、古い形式~というのが出ていますが、とりあえず無視しています。
エラーはありません。

char* path;
ifstream if(path);

if(!if)
return;

上記のようなコードでpathの中身がC:\フォルダ\test.txtのように
日本語が入っているパスだとファイルを認識しないでリターンします。
奥の方まで見たら、パスが文字化けをしていました。

VC2005の設定でプロパティの「マルチバイト文字を設定する」にはしてあります。
よろしくお願い致します。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

似たようなスレッドがありました。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=243152&SiteID=7

tare さんのレスより
> locale::global(locale(japanese));
> をmainの最初に記述して、回避できませんかね。
としてみては如何でしょうか?


返信引用
KENZI
 KENZI
(@KENZI)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

よく調べないですみません。
こういうスレッドがあったんですね。
InitInstance()の中に記述すればよいでしょうか?
locale::global(locale(japanese));をそのまま記述すれば
よいのでしょうか?
質問ばかりですみません。

今は環境が違うので試せませんが、
月曜に学校で試してみたいと思います。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> よく調べないですみません。
別の掲示板ですし、2005の情報はなかなか見つからないのでしょうがないですね。

> InitInstance()の中に記述すればよいでしょうか?
> locale::global(locale(japanese));をそのまま記述すれば
> よいのでしょうか?
ちょっとつくりがどうなっているのかわかりませんが、
適当なところに書いてみて、試行錯誤してみてください。

ところで、MFCならば、STLのifstream以外にも
CFileやCStdioFileもつかえますので、どうしても ifstream で解決できないときには
代替案としても考えてみてください。
(CFileやCStdioFileは普通につかえるっぽい。)


返信引用
KENZI
 KENZI
(@KENZI)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

いろいろと試してみます。
ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました