接手一個悠久歷史的專案,但是版控有點混亂,所以正在重新整理。過程中,發生了各項問題,然後耗費最多時間的,就是標題上的錯誤了。
問題描述
先附上開發環境
1 | OS Name: Microsoft Windows 10 Pro |
先說明這是一個 webform 的 website project ,發生的錯誤訊息如下
error CS1010: Newline in constant
error CS1056: Unexpected character ‘’
error CS1056: Unexpected character ‘’
error CS1056: Unexpected character ‘’
error CS1010: Newline in constant
問題分析
看說明,初步認為幾個可能:
檔案內容內的 { 之類的缺少或是跑掉,造成有些錯誤
仔細看過後,發現完全沒有這種現象,直接排除字串變數的內容有些文字的編碼問題
調整了字串內容的編碼,但是毫無影響,也排除換行符號等
一開始認為這個可能性最高,除了換行符,或是其他特殊字元影響,透過 notepad++ 查看,發現也不是此可能編碼問題
上述的特殊字元排除後,就想到編碼問題,但是查看後,發現檔案是 utf-8 ,也沒有亂碼的現象,一度以為不是此可能了。最後發現 aspx 頁面的編碼與對應的 .cs 檔案編碼不同;aspx 頁面編碼是 utf-8 BOM
解決方式
找到問題後,解決方式很簡易,讓兩個檔案的編碼相同即可;透過 notepad++ 或是 VSCode 或是 Visual Studio 2017 另存新檔,然後選擇編碼,以上這些都可以變更檔案編碼,以下附上 Visual Studio 2017 變更編碼的圖片。有興趣想了解 BOM 的,請看連結的 wiki