2009-02-27 32 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,但我不確定爲什麼字節順序標記會顯示在文檔的中間......可能很重要,或者只是巧合。