demoshop

demo, trying to be the best_

先說結論:這是編碼錯誤導致!

印象中每一版的 Visual Studio 剛推出都會有一樣的問題(難怪大家都說不要裝中文版),昨天要睡覺之前寫好了一個新功能,推上 Azure DevOps 跑到 CI 時一直跳出 Error CS1010: Newline in constant 的錯誤, 一時半刻沒反應過來,一陣子後才回想起這不是每次都會碰到的嗎….(上一次是 2019 難怪我忘了) ,這篇文章會快速的講原因和解法。 

前情提要

本機編譯完全沒問題,丟上編譯機就報錯(這不是CI 的錯,這是 Visual Studio 太厲害) 

CI 瘋狂報錯

問題根本

專案範本編碼

這是中文版 Visual Studio 的問題,如果你建立了一個專案並且在裡面輸入到雙位元的字(就是中文、日文、韓文)是完全沒問題的,因為預設專案建立出來的檔案格式會是 UTF-8 with BOM 從下方圖片可看到,編碼正確,中文也正確顯示。    

上面是Visual Studio 、下面是VS Code  

CodeTemplate 編碼

但如果你使用了 Code Template 產生的新檔案,就會出事了

上面是Visual Studio 、下面是VS Code

出事的原因是,其實利用 CodeTemplate 產出來的檔案編碼是 Big5 但 Visual Studio 卻說它是 UTF-8 所以用其他的編輯器來看就會是亂碼了(只有 Visual Studio 會正常顯示,你說它強不強😎)

解決方式

Visual Studio 本身是可以改變儲存的編碼,但太麻煩我們就跳過不介紹,你上網搜尋應該是找的到,我們可用任何一個可以調整編碼的編輯器修改編碼(Notepad++, VS Code 都是不錯的選擇),但如果你直接調整可能會造成雙字元的部分全部變亂碼,所以你可以在 Visual Studio 中全選複製,然後再去另外的編輯器貼上,就可以修改編碼又保留雙字元文字。

如果嫌這樣太麻煩,可以安裝「FileEncoding」套件簡單完成此需求,安裝此套件後每個檔案的右下方會顯示文件的編碼,也可以直接點選轉換。

           

         

回應討論