既然已經是無法識別,目前總結出兩種狀況:
第一種比較前置的原因為程序源代碼或頁面中的編碼使用不正確,導致編譯器不能辨認的字符出現;
第二種因為編寫代碼時沒有按照編碼規則使用特殊字符,導致無法正常識別區段或結束;
其中第一種一般不會遇到,因為只會發生在代碼或頁面相應文件的編碼也就是BOM發生改變時,導致VS在識別文字編碼時出現異常,將空白、中文、標點識別成特殊字符的異常;
如圖:
現在已經知道原因,只需要將相應文件另存為,即可解決該錯誤(選擇UTF-8);
如圖:
第二種經常會遇到,特別是沒有真正了解特殊字符的用法和規則的時候遇到:
最簡單的比如說:
void conndata(){
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\Product\database\producttest.mdb");
conn.open();
}
注意紅顏的反斜線,這樣用就是出現問題,應該是同時使用兩個反斜線“\\”;
關於這一點MSDN和support.microsoft都有詳細的分析和解釋;
如下:
http://msdn.microsoft.com/zh-tw/library/44ezxxy3(VS.80).aspx
Visual C# 參考: 錯誤和警告
編譯器錯誤 CS1009
錯誤訊息
無法辨認的逸出序列在字串中反斜線 (\) 的後方出現未預期的字元。編譯器需要有效的逸出字元 (Escape Character);如需詳細資訊,請參閱逸出字元。
下列範例會產生 CS1009:
// CS1009-a.cs class MyClass { static void Main() { string a = "\m"; // CS1009 // try the following line instead // string a = "\t"; } } |
發生這種錯誤通常是因為在檔案名稱中使用反斜線字元,例如:
string filename = "c:\myFolder\myFile.txt"; |
若要解決這個錯誤,請使用 "\\" 或 @ 加上引號的字串常值 (String Literal),如下列範例所示:
// CS1009-b.cs class MyClass { static void Main() { string filename = "c:\myFolder\myFile.txt"; // CS1009 // try the one of the following lines instead // string filename = "c:\\myFolder\\myFile.txt"; // string filename = @"c:\myFolder\myFile.txt"; } } |
http://support.microsoft.com/search/default.aspx?query=%E7%84%A1%E6%B3%95%E8%BE%A8%E8%AA%8D%E5%AD%97%E5%85%83%E9%80%B8%E5%87%BA%E5%BA%8F%E5%88%97&mode=r&catalog=LCID%3D1028
不會 BUG: The 偵錯工具在 Visual Studio . NET 中正確地顯示逸出字元序列
http://support.microsoft.com/kb/814904/zh-tw
開發工具不接受 Unicode 文字
http://support.microsoft.com/kb/106065/zh-tw
如何在能夠指令碼中使用反斜線字元(VFP)
http://support.microsoft.com/kb/115815/zh-tw