1

追加用のファイルを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"));
4

1 に答える 1

0

私はついにこれを理解しました。私たちが使用しているサードパーティのソフトウェアは、実際にはBOMの最後のバイトを取り除いていて、それがctrl-zMS-DOSのファイルの終わりの文字であると考えていました。

于 2013-01-23T18:55:28.730 に答える