アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2014年08月22日

C, C++ WIn32 標準ファイルIOライブラリでUTF入出力ができた

今までは、 CreateFile WriteFile などでファイル入出力することが多かったので、ファイル内のテキストエンコードはあまり気にしたことがなかったのだが、近ごろ、ログファイルをShiftJISではなく、UTF-8で出してほしいという要望があがってきた

今までのやり方と踏襲するなら MultiByteToWideChar を使って WriteFile の直前にUTF-8変換をすることにしていただろう

しかし、ログファイルの「出力には、よくある可変数個の引数を使って、いわゆる printf 方式で出力したいというのも人情である
また、共通ライブラリ化してあるものには、そうした標準ファイルIOを利用している箇所も多数あったため、改めて調べてみたら、fopen 時に、文字エンコードを指定できる機能があることがわかった

MSDNドキュメント

FILE* fp = fopen("test.txt", "a, ccs=UTF-8");


こうすると、初めてファイルを作成した際に、BOMが書き込まれて、メモ帳でもちゃんと読めるのがうれしい
※ちなみに、Windows向けのUTF-16はccs=UTF-16LEと記述すればよいようだ
※普通のCPUはx86系かx64系なのでLE(Little Endian)ということだろう

いつの間にか便利な機能が追加されていたものだ





ファン
検索
<< 2014年08月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
最新記事
最新コメント
タグクラウド
カテゴリアーカイブ
プロフィール
いしちゃんさんの画像
いしちゃん
ブログ
プロフィール
日別アーカイブ
×

この広告は30日以上新しい記事の更新がないブログに表示されております。