0

私の入力は Unicode 文字です。たとえば、「(U+00DB) (U+0081)」(wchar_t*) です。wcstombs を使用して、このワイド char 文字列を char * (MBCS) に変換します。Unicode はすでに UTF-8 でエンコードされているため、バイトごとにコピーされた Unicode のシーケンスを DB81 char* として返すことを期待しています。しかし、代わりに c3 9b を取得します。これは Linux と Windows で発生しており、「DB 81」のみが表示されます。

(hexdump に示されているように) DB 81 という名前のファイルを開く必要がありますが、fopen は char* ファイル名を使用します。したがって、この wchar_t* を MBCS に変換する必要があります。助けてください!!

4

1 に答える 1

0

いいえ、あなたがやりたいことは、あなたがすべきだと思っていることではありません。

fopen() は、どのような状況でも - Unicode をサポートしていないため、システムで可能なすべてのファイル名を処理することはできません。

_wfopen() でそれを行う方法については、 http: //www.utf8everywhere.org を参照してください。

于 2013-02-06T15:31:16.537 に答える