VC2005でunicodeの文字列をファイルに書き出すにはどの関数を利用すればいいのでしょうか?プログラムはDLLです。

回答の条件
  • 1人2回まで
  • 登録:2009/10/02 20:11:08
  • 終了:2009/10/07 22:33:13

ベストアンサー

id:ardarim No.2

ardarim回答回数892ベストアンサー獲得回数1422009/10/03 22:30:52

ポイント35pt

WIN32であれば、元の文字列がシフトJISだとすると、MultiByteToWideCharでUnicodeに変換し、変換後のバッファをそのままWriteFileでファイルにバイナリで書き出すだけです。(Unicodeは1文字あたり2バイトなので書き込むバイト数は、文字数×2バイトになることに注意)


その他注意としては、Unicodeテキストファイルとして書き出したい場合は、Unicodeテキストであることを示すために、ファイルの先頭にUnicodeのUTF-16LEのBOM( 2バイトで、FF FE )を出力する必要があります。メモ帳などUnicode対応のアプリケーションであれば、このBOMをみてUnicodeテキストファイルと判断してくれます。

そのほかは、単純にUnicode文字列のバッファを書き出すだけです。

その他の回答(1件)

id:angemaries No.1

angemaries回答回数80ベストアンサー獲得回数22009/10/03 00:19:49

ポイント35pt

MFCでしょうか?

unicodeのまま出力したいのでしょうか?

http://www.g-ishihara.com/mfc_fi_02.htm

id:mai_mai_mail

MFCではないです。WIN32です。そのまま出力したいです。

2009/10/03 00:50:47
id:ardarim No.2

ardarim回答回数892ベストアンサー獲得回数1422009/10/03 22:30:52ここでベストアンサー

ポイント35pt

WIN32であれば、元の文字列がシフトJISだとすると、MultiByteToWideCharでUnicodeに変換し、変換後のバッファをそのままWriteFileでファイルにバイナリで書き出すだけです。(Unicodeは1文字あたり2バイトなので書き込むバイト数は、文字数×2バイトになることに注意)


その他注意としては、Unicodeテキストファイルとして書き出したい場合は、Unicodeテキストであることを示すために、ファイルの先頭にUnicodeのUTF-16LEのBOM( 2バイトで、FF FE )を出力する必要があります。メモ帳などUnicode対応のアプリケーションであれば、このBOMをみてUnicodeテキストファイルと判断してくれます。

そのほかは、単純にUnicode文字列のバッファを書き出すだけです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません