選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
2 分鐘閱讀時間 (323 個字)

關於編譯環境的一次奇遇(作業系統編碼問題)

unsplash-coding121
一個使用 C# 撰寫,確定可以編譯成功的專案,換了新的編譯環境後竟然編譯失敗了?
  • error CS1012: Too many characters in character literal
依據 MS Developer Network 官方說法,程式碼中所使用的單引號只能一次包一個字元,不能包一組字串(字元陣列)。但這個過程我的確沒有改過程式,到底單引號中的字元是怎麼無故變成字串的呢?請看這段引發問題的程式:


  • string[] fixflds = fixfld.Split('、');
原來是作業系統語系不同惹的禍:由於「、」是中文全形符號,它在 Big5 環境被認定是單一字元,但在英文版 OS 下立馬被當成兩個字元了。因此,若仍然很想在英文環境完成這個任務,最快的解法就是「在編譯前把編碼改為 Big5」,但該怎麼改呢?

我先到 command line 去查看「目前」的編碼:
  • C:\>chcp
  • Active code page: 437
然後,試著這樣去改它:
  • C:\>chcp 950
  • Invalid code page
結果當然是失敗了。難道只能回中文版才能處理嗎?或是補裝中文語系就好了呢?

結果,方法出乎意料的簡單:

到  Windows 的「地區設定」、「管理」,把  Language for non-Unicode programs 改為  Chinese (Traditional, Taiwan),就能快速改變編碼,讓編譯成功過關囉!
[Visuo Studio] 類別庫(class library)共用設定與實作
初探 ASP.NET MVC 多國語系(i18n)|#1: 觀念與基本做法
 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/02, 週四

Captcha 圖像