2012-11-16 41 views
1

我在创建用于追加的UTF-8文件时遇到问题。 MSDN documentation指出使用“a +”作为模式参数会打开“读取和追加”文件,这是我需要做的。出于某种原因,当没有文件存在并且我正在创建新的文件时,在新文件中创建的BOM or byte order mark格式错误。使用fopen(C编程语言)和“a +”模式追加文件

基本上,它只写了3个字节的前2个。它应该写入字节0xEF,0xBB和0xBF,但它只写入前两个(0xEF和0xBB)。如果您在文本编辑器中查看它,它应该看起来像这样:,但是看起来像这样:ï»。有没有人看过这个?一个已知的fopen错误可能?这是我用来打开的代码,我用一个简单的fwrite写入文件。一切工作正常,当我通过在“W”(写入)的模式,但BOM是畸形的“一”或“+”:

_tfopen(PathToFile,UNICODE_CHAR_MACRO("a+, ccs=UTF-8")); 
+0

您是否正确关闭/清空文件? – Cornstalks

+1

既然你提到“文档说”这种方式,我想澄清的东西:追加模式意味着,新的字节总是附加到文件的末尾,不管什么,不像正常的写模式。这可能是你想要的,以防万一。 – hyde

+0

是的。我有一个非常简单的程序打开文件,打印一个Unicode文字字符串并关闭它。 – Stubbs

回答