2015/07/13

魔鬼藏在程式碼的註解裡

想了很久不知道標題應該怎麼取

正文開始

Steam 是一個現在很著名的線上數位軟體銷售平台
上個月是 Steam 的夏季特賣
被 ptt 鄉民們戲稱為「電玩宅男百貨公司週年慶」
身為宅男的我當然也買了一兩款標上了「歷史新低」的遊戲
其中一款是今年出了續作且聲勢浩大的「巫師 3」
我買了前作「巫師 2 : 王國刺客」
於是有了這一篇文章


當時 ptt 有人買了同款遊戲後無法執行 (請見 : [問題] 巫師2 下載完無法執行)
一執行就跳出一個錯誤視窗
我看完鄉民給的解法後覺得蠻有趣的
就稍微研究了一下

 

這問題是來自於在 script 裡面有波蘭文的註解
程式碼的部分有興趣的人再點大圖看吧
左邊是在中文系統下的畫面
右邊則是在波蘭語系統下的截圖
出錯的兩句註解分別是
MT: funkcja włączająca/wyłączająca płonące przeszkody (翻譯)
Tu zostało zamknięte Wielkie Zło.(翻譯)

因為使用非英文的語言在程式原始碼檔案中寫註解
結果導致 compile error
這個坑怎麼那麼似曾相似啊!!!!!!!!!!
相信有些人應該會聽過「許功蓋」這號人物
(聽過的人不要怕被猜出年紀不敢承認啊 XD)
這是在 Big5 編碼 (或稱大五碼) 下發生的問題
即使在 Unicode 已經這麼普及的年代
這問題仍然在某些系統繼續存在 (請見 : 我在台灣開 Uber 的感想:還是當乘客比較爽)
在念大學的時候
就曾經在註解或是 printf 內寫了這幾個神奇的魔術文字
導致 compile 出問題
沒想到這問題不是只有中文會發生啊 (有點幸災樂禍)
而且巫師 2 是在 2011 年發行的
只能說歷史是會重演的

沒有留言:

張貼留言