2009-02-27 30 views
0

我在运行XP的Windows计算机上的Visual Studio 2008以外的C#项目上运行doxygen(1.5.8)。在生成胶乳代码时,会包含一些非法序列。它总是包含以下顺序:“拉丁 - 我与dieresis,如二进制移位操作符,和西班牙开放问号”。我在“使用{\ bf系统}”的背景下看到它发生了,但也许还有其他的。Doxygen生成的胶乳源中的字符无效?

生成的乳胶文件读取

\begin{CompactItemize} 
    \item 
    using {\bf System} 
    \end{CompactItemize} 

而源很简单:

using System; 
using System.Collections.Generic; 
using System.Linq; 

一些奇怪的Windows BOF字符?它似乎只在使用系统之前;指令(每个文件的第一个)。

编辑:感谢所有。正如我在下面接受的答案中所述,这是BYTE_ORDER_MARK字符。很明显,不出所料,Visual Studio正在发挥作用。好的是有一种方法可以在没有BOM签名的情况下以UTF-8保存文件。文件 - >高级保存选项 - >编码(无签名的UTF-8) - 代码页65001.糟糕的是,似乎没有办法用批量编码保存解决方案的所有现有文件,可以这么说,每个文件必须独立保存。我发现的另一个怪癖(至少在我的情况下)是文件 - >高级保存选项不可用,除非您双击该类并且该文件在编辑器中打开。哦,好吧...

回答

2



那是UTF-8编码的字符U + FEFF,字节顺序标记的ISO-8859-1表示。材料清单是用作UTF-16文件中的第一个代码点,不应该用于UTF-8文件,但不幸的是,有一些非常愚蠢的工具默认生成它。如果您通过连接来自其他文件的文本位来创建文件,则甚至可以在文档中间结束BOM。

查找将文件保存为“带BOM的UTF-8”的编辑器并将其刻录。

ETA重新更新问题:

使用{\ BF系统}

虽然源是简单地:使用系统

;

在“使用”之前在十六进制编辑器中检查隐藏人造BOM的来源。

0

你知道应该是么?

有几种可能性,最明显的是你有一些随机的Unicode,那些是你从TeX字体中获得的字符。

0

它看起来像一个字符编码问题给我。

这三个字符的序列是用UTF-8编码的Unicode字节顺序标记0xfeff,但我不确定为什么字节顺序标记会显示在文档的中间......可能很重要,或者只是巧合。