追加用のファイルをUTF-8で作成するのに問題があります。MSDNのドキュメントには、modeパラメーターに「a +」を使用すると、「読み取りと追加」用のファイルが開くと記載されています。これは、私が行う必要があることです。何らかの理由で、ファイルが存在せず、その場で新しいファイルを作成している場合、新しいファイルに作成されたBOMまたはバイト順マークの形式が正しくありません。
基本的には、3バイトのうち最初の2バイトのみを書き込んでいます。バイト0xEF、0xBB、および0xBFを書き込むことになっていますが、最初の2つ(0xEFと0xBB)のみを書き込んでいます。テキストエディタで見ると、次のようになります:が、代わりに次のようになります:ï»。誰かがこれを見たことがありますか?既知のfopenバグかもしれませんか?これは私が開くために使用しているコードであり、ファイルを書き込むために単純なfwriteを使用しています。モードに「w」(書き込み)を渡すとすべて正常に機能しますが、BOMは「a」または「a+」に対して不正な形式になっています。
_tfopen(PathToFile,UNICODE_CHAR_MACRO("a+, ccs=UTF-8"));