WinXPシステムで英語以外の名前のファイル名を処理するためのプログラミングを始めたばかりです。ユニコードに関する推奨事項をいくつか読んだところ、基本的な考え方は理解できたと思いますが、まだはっきりしていない部分もあります。
具体的には、NTFS に格納されているファイル名(コンテンツではなく、ファイルの実際の名前) はどのエンコーディング (UTF-8、UTF-16LE/BE)ですか? char* を使用する fopen() を使用して任意のファイルを開くことは可能ですか? または、wchar_t* を使用し、おそらく UTF-16 文字列を使用する wfopen() を使用する以外に選択肢はありませんか?
UTF-8 でエンコードされた文字列を fopen() に手動でフィードしようとしました。
unsigned char filename[] = {0xEA, 0xB0, 0x80, 0x2E, 0x74, 0x78, 0x74, 0x0}; // 가.txt
FILE* f = fopen((char*)filename, "wb+");
しかし、これは「ê°€.txt」として出てきました。
私は、(wchar_t*) ではなく (char*) を渡すいくつかの Windows アプリケーションを漠然と覚えているように見えるので、UTF8 でエンコードされた文字列が Windows でファイル名を開くのに十分であるという印象を受けました (これは間違っているかもしれません)。問題はありません。
誰でもこれに光を当てることができますか?