[原創]關於VS“無法辨認的逸出序列”的錯誤分析和解決方法

環境:VS2005, OS:繁體XP , 因為在出現此問題后我在網絡上沒有找到結果(第一種),可能因為繁體的環境比較少,所以隨筆此文,請大家批評指正;

既然已經是無法識別,目前總結出兩種狀況:
第一種比較前置的原因為程序源代碼或頁面中的編碼使用不正確,導致編譯器不能辨認的字符出現;
第二種因為編寫代碼時沒有按照編碼規則使用特殊字符,導致無法正常識別區段或結束;

其中第一種一般不會遇到,因為只會發生在代碼或頁面相應文件的編碼也就是BOM發生改變時,導致VS在識別文字編碼時出現異常,將空白、中文、標點識別成特殊字符的異常;
如圖:
無法辨認的逸出序列---錯誤01.png

現在已經知道原因,只需要將相應文件另存為,即可解決該錯誤(選擇UTF-8);
如圖:

無法辨認的逸出序列---錯誤.png


第二種經常會遇到,特別是沒有真正了解特殊字符的用法和規則的時候遇到:

最簡單的比如說:
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";
   }
}
support.microsoft中這種要求涵蓋了幾乎所有的編程工具
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
posted on 2008-09-24 10:35  巍巍边疆  阅读(6920)  评论(2编辑  收藏  举报