1

我无法在 UTF-8 中创建文件以进行附加。MSDN 文档指出,使用“ a+”作为模式参数会打开文件进行“读取和附加”,这是我需要做的。出于某种原因,当不存在文件并且我正在动态创建一个新文件时,在新文件中创建的BOM 或字节顺序标记格式不正确。

基本上,它只写入 3 个字节中的前 2 个。它应该写入字节 0xEF、0xBB 和 0xBF,但它只写入前两个(0xEF 和 0xBB)。如果您在文本编辑器中查看它,它应该看起来像这样:,但看起来像这样:ï»。有人见过这个吗?也许是一个已知的 fopen 错误?这是我用来打开的代码,我正在使用简单的 fwrite 来写入文件。当我为模式传入“w”(写入)时,一切正常,但 BOM 的“a”或“a+”格式错误:

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

1 回答 1

0

我终于想通了。我们使用的第三方软件实际上剥离了 BOM 的最后一个字节,认为它是ctrl-z MS-DOS end of file character

于 2013-01-23T18:55:28.730 回答