【茶包射手日記】Notepad 改 config 後程式掛點

倉頡輸入筆記文網友 s793016 留言提到 PRIME(中州韻輸入法) 內含倉頡輸入,簡單試用挺驚豔的(心得容後再寫),不過有個問題:必須新增簡體中文語系才能用,解法是修改 ime.json 檔將語系改為 zh-TW 重新註冊 PIMETextService.dll (參考: 在 Windows 10 下安裝最新版的 PRIME 中州韻輸入法方法 - Hiraku Dev)。修改 Program Files 目錄下的檔案需要管理權限,我選擇用管理者權限開 CMD,切到指定目錄下指令 notepad ime.json 用筆記本簡單修改後存檔,接著下指令跑 regsvr32 跑完程序,不料踩到 Notepad 地雷一枚。

反註冊沒什麼問題,但註冊 PIMETextService.dll 時程式崩潰,註冊失敗~

再做了測試,發現如不修改 ime.json,regsvr32 反註冊及註冊都沒問題。反覆測試了幾次,某次改用 Notepad++ 修改,居然註冊成功了!兇手現身,立刻拘提 Notepad 到案嚴刑拷打。

測試使用 Notepad 更動 ime.json 的一個字元,理論上檔案大小不變。但比對修改前後,發現檔案差了 3 個 Byte。

使用 Notepad++ 開啟修改後的 ime-notepad.json,右下角 UTF8-BOM 足以解釋 3 個 Byte 從何而來。

ime.json 原本的格式是不包含 BOM 的 UTF8,Notepad 存檔時卻自做主張在檔案前方補上 BOM(0xEF 0xBB 0xBF),用 Notepad++ 的 Hex Editor 外掛可以看得很清楚:

換句話說,問題點在於 Notepad 修改 ime.json 時雞婆為檔案補上 BOM,而恰巧 PIME 程式無法識別包含 BOM 的檔案格式且未捕捉到例外,然後... BOOM! 程式就爆炸了~

Notepad 為什麼要雞婆加上 BOM?在一篇十年前文章(BOM BOM BOM - 就是愛程式)找到詳細說明,Notepad 會加 BOM 的行為由來以久,只是我今天才遇上。又長見識了。

最後提一下 PRIME,中州韻輸入法引擎連續輸入整句話字根(不用敲空白)再用詞庫解析的做法感覺相當聰慧,還有自我學習能力,開源開放甚至允許你發明自己的輸入法令人耳目一新。可惜測試期間好幾次因切換輸入法讓應用程式(Chrome、Live Writer)崩潰閃退,穩定性讓人擔憂,暫時是無緣了。

歡迎推文分享:
Published 07 December 2017 08:54 PM 由 Jeffrey
Filed under:
Views: 5,822



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<December 2017>
SunMonTueWedThuFriSat
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication