C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 文字化け


(過去ログ 61 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■35379 / inTopicNo.1)  文字化け
  
□投稿者/ ryou (1回)-(2009/04/28(Tue) 11:05:19)

分類:[C/C++] 

環境:vc++ 2008 Express Edition

CreateFile()でファイルを新しく作成して、WriteFile()で書き込む処理をしています。
ビルドを行うと、「1 番目の引数を 'const char [9]' から 'LPCWSTR' に変換できません」と
エラーが出るのでファイル名を(LPCWSTR)でキャストをしたところ、実行することができました。
しかし、ファイル名が文字化けしてしまうのです。色々調べてみたところ、LPCWSTRでキャストをしていることが
原因である分かりました。そこで、質問なのですが、ファイル名(text.txt)を文字化けせずに実行する方法ありませんか?

引用返信 編集キー/
■35380 / inTopicNo.2)  Re[1]: 文字化け
□投稿者/ Blue (10回)-(2009/04/28(Tue) 11:17:17)
・TCHARをつかう
・CreateFileではなくCreateFileAをつかう
・文字セットを「Unicode」から「マルチバイト」に変更する。


なんで文字化けするかは、Shift_JIS文字コードの羅列を無理やりUnicodeに変換するためです。

例)
char path[] = "test.txt";

0x74 0x65 0x73 0x74 0x2e 0x74 0x78 0x74 0x00

LPCWSTRでキャスト

0x7465 0x7374 0x2e74 0x7874 0x00??
引用返信 編集キー/
■35384 / inTopicNo.3)  Re[2]: 文字化け
□投稿者/ ryou (2回)-(2009/04/28(Tue) 12:35:18)
No35380 (Blue さん) に返信
> ・TCHARをつかう
> ・CreateFileではなくCreateFileAをつかう
> ・文字セットを「Unicode」から「マルチバイト」に変更する。
>
>
> なんで文字化けするかは、Shift_JIS文字コードの羅列を無理やりUnicodeに変換するためです。
>
> 例)
> char path[] = "test.txt";
> ↓
> 0x74 0x65 0x73 0x74 0x2e 0x74 0x78 0x74 0x00
> ↓
> LPCWSTRでキャスト
> ↓
> 0x7465 0x7374 0x2e74 0x7874 0x00??

解決しました。
何故の部分にまで言及してくれて
有難うございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -