Browse by Tags

如何自訂 OpenCC 字彙轉換表
OpenCC 已提供十分優質的繁簡轉換,不過呢,實際使用下來難免會有些不到位的地方。所幸,OpenCC 的架構開放又有彈性,修改 json 設定檔就能載入自訂轉換字典,如果對既有轉換表或轉換規則不滿意,OpenCC 開放源碼,絕對讓你改到開心為止。 用個簡單例子示範如何自訂字彙轉換。假設我想將「黑暗執行緒在雲霄飛車上吃便當」翻成簡體,如使用包含常用詞彙轉換的設定檔 tw2sp.json,轉換結果如下: 輸出結果為「黑暗綫程在云霄飞车上吃便当」,而我希望保留「執行緒」不要翻成「綫程」,並將「云霄飞车...
Posted 13 June 2018 10:34 PMJeffrey | with no comments 1,132
Filed under:
使用 C# 整合 OpenCC 執行中文繁簡轉換
前篇文章 介紹了輕巧但威力強大的 OpenCC,使用 opencc.exe 可輕鬆完成繁簡轉換。 如果我們要在 .NET 裡寫一個函式招喚 OpenCC 將繁體字串轉成簡體字串該怎麼做? 呼叫外部 .exe 這等小事,自然難不倒 .NET 老鳥,生個 System.Diagnostics.Process,給對 exe 路徑,弄兩個隨機暫存檔放待翻文字與輸出結果,等待 opencc.exe 執行完畢,讀出結果刪掉暫存檔,搞定收工! public static class OpenCCConverter...
Posted 26 May 2018 09:32 PMJeffrey | with no comments 2,005
Filed under: ,
OpenCC 中文繁簡體轉換工具
漫長的碼農生涯,難免會遇到中文繁簡轉換需求,過去我都 依賴 Word ,但在 Web Server 整合 Word 是件麻煩事。Word 程序體積龐大,啟動要耗用不少記憶體跟 CPU,不適合每次 Request 隨用隨建用完即丟。加上 Word 為桌面程式會綁執行身分,不適合用 IIS AppPool 帳號跑。最後我琢磨出來的解決方案是寫成 Windows Service 以 WebAPI 方式提供服務,服務啟動時開啟固定數量的 Word 程序,分攤處理需求。在實務經驗中,Word 偶爾會因不明原因故障...
Posted 24 May 2018 11:10 PMJeffrey | 1 comment(s) 3,092
Filed under:
JavaScript 中文排序問題
今天才發現 JavaScript 中文字串排序有個大問題! 下圖是 KendoGrid 在 Chrome 使用 JavaScript 排序的結果,如圖所示,一到七由小到大排序結果為一、七、三、二、五、六、四,既不是依筆劃,也不是依注音: (SQL 的中文定序就區分筆劃跟注音,例如: Chinese_Taiwan_Stroke_CI_AS vs Chinese_Taiwan_Bopomofo_CI_AS 參考 ) 爬文後得知這是 JavaScript 中文字串排序的己知問題(我 Lag 真大),字串型別有個...
再談集保罕用字集與 BIG5 造字區
同事遇到集保罕集問題,我試著解釋個中奧妙時冒出一堆「集保罕字的X」「Unicode標準字的X」「看起來一樣但編碼不同」把同事薰得七葷八素,感覺都快吐了… 嗯,寫篇文章細說從頭吧。 很久很久以前,在 Unicode 還沒一統天下之前, BIG5 是台灣地區的主流中文編碼,其中定義 13,053 個常用字與次常用字與 441 個符號。問題來了,有些日常生活會用到的字(最常見是人名)沒被包含在這一萬三千字裡,所以早些年水牛伯還活躍於政壇時不時可在使用 BIG5 的新聞網站看到「游錫方方土」,還有「陶吉吉...
Posted 18 August 2017 08:05 AMJeffrey | with no comments 6,547
Filed under:
中文亂碼「嚙踝蕭嚙踝蕭」是怎麼來的?
在 FB 看到 91 貼了一張照片,提到某廠商的電子報一直存在亂碼問題,寄信人與信件主旨出現一堆嚙調客、嚙踝蕭… 之類的怪字亂碼。 有種畫面上到處是老鼠的感覺… (嚙是 齧 的異體字) 連 Chrome 也想吶喊「有老鼠!Encoding 碰上麻煩了。」 XD 之前寫過一篇 中文亂碼"蕞蕞蕞蕞"是怎麼來的? ,猜想同樣是錯用編碼解析的結果,雖然最近案子忙到火燒屁股,但就看到球滾進了我的守備範圍,還是忍不住研究起老鼠從哪來… XD 用一小段程式驗證問題來自「錯用 UTF8、BIG5...
Posted 10 October 2016 01:18 AMJeffrey | with no comments 10,316
Filed under:
Hacking樂無窮:修正Dapper+ODP.NET無法寫入Unicode問題
歷經一段時間摸索歷練,確立「新増修改用EF/ORM,查詢一律用Dapper」的最高指導原則,Dapper的簡潔、效能與彈性無可挑剔,一切看似完美,直到我膝蓋中了一箭… 無意間發現,使用Dapper+ODP.NET無法寫入Unicode字元 跟Oracle Unicode問題奮戰 超過10年 ,以為妖孽已被降伏,用OracleDbType.NVarChar2應該就萬無一失,甚至要在CommandText中用N'…'也 不是問題 ,萬萬沒想到Oracle Unicode問題今天又跑出來咬我屁股...
Posted 21 August 2016 09:56 PMJeffrey | with no comments 7,427
Filed under: , ,
Excel CSV輔助工具強化版-支援換行符號
避免Excel開啟CSV時截掉左補零的小工具 是我三年前的作品,用來克服Excel開啟CSV時"00001"會變成"1"的問題。最近網友g提供了一個轉換失敗案例,引發我的興趣,檢查CSV後發現幾項問題: CSV內含日文,使用Shift-JIS編碼(ANSI)而非UTF8,當初將所有ANSI檔案視為BIG5,形成亂碼 部分欄位內容夾帶換行符號(如黃底所示),擾亂原本以"\r\n"分隔資料列的解析邏輯 程式未考慮CSV部分欄位自帶雙引號的情況...
潛盾機-解決VS2015程式檔BIG5相容問題
改用VS2015後沒多久就發現它處理BIG5(ANSI)編碼程式碼的原則不同於以往(推測與編譯器改用Roslyn有關),導致部分使用BIG5編碼存檔的古老程式檔,會因 許功蓋 造成編譯錯誤。 PO文隔兩天同事跟我說,他們換VS2015後也射了好一陣子茶包,最後爬文又爬回我的文章。XD 後來聊到可以寫程式把所有BIG5編碼程式檔轉成UTF8一勞永逸,同事說檔案沒幾個,手動另存就搞定了,還不需要養乳牛。 這兩天,收到網友留言詢問VS2015是否會修正這個問題;也有網友提到手上專案有成千上萬個cs,改了一個BIG5...
【茶包射手日記】VS2015程式檔編碼問題
裝好VS2015後,陸續將VS2013維護的專案改用VS2015開啟,原以為可完全無痛移轉,踩到小刺一根。 某個用VS2013開發多時的專案,移到VS2015出現編譯錯誤!以下面的程式為例: Console.WriteLine那行發生Unrecoginzed escape sequence錯誤。 看到Unrecongized escape又看了看問題字串,程式老骨頭心中警鈴聲大作: 我被「 許功蓋 」偷襲了? 使用Notepad++開啟C#原始檔,果不其然,檔案編碼被設成BIG5(ANSI)。 依開發規範...
Posted 23 July 2015 06:09 AMJeffrey | 8 comment(s) 19,050
Filed under: ,
Strings.StrConv半形全形轉換注意事項三則
Microsoft.VisualBasic.Strings.StrConv靜態方法是在.NET轉換半形全形最簡便的做法(即使語言是C#也沒差,在專案加入Microsoft.VisualBasic參照即可),最近實際用在專案,又發現了一些眉角,整理筆記備忘: 在開發機測試OK,丟到測試機執行冒出VbStrConv.Wide and VbStrConv.Narrow are not applicable to the locale specified.錯誤。研究後發現問題出在測試機作業系統語系為英文...
Posted 06 March 2015 06:47 AMJeffrey | 1 comment(s) 15,489
Filed under:
SQLPlus執行UTF-8編碼指令檔
作業環境有個需求: 有一些PL/SQL DDL指令需先匯成sql檔,再透過程式呼叫SQLPlus.exe執行。 SQLPlus.exe可讀入SQL Script檔案直接執行,例如: sqlplus –s user/pwd @script.sql,而透過程式啟動外部EXE也不是問題,一切看似小菜一碟... BUT! 人生最厲(ㄐㄧ)害(ㄨㄞ)的就是這個BUT! 問題出在SQLPlus在命令提示視窗(Command Prompt)執行,只支援ANSI編碼,而script.sql可能包含Unicode文字...
Posted 24 May 2014 09:40 AMJeffrey | with no comments 17,723
Filed under: ,
BIG5 GB2312繁簡編碼快篩
BIG5 與 GB2312 是繁體中文與簡體中文最常採用的 ANSI 形式編碼,當代系統多已改採 Unicode ,但在涉及傳統系統整合的情境中,仍有處理中文 ANSI 編碼的需求。有時,資料來源較雜,BIG5、GB2312 編碼都有可能,系統規劃者多半希望系統能由二進位資料 (Byte Array) 自動判別其編碼為 BIG5 或 GB2312 。就理論而言,以程式判斷 BIG5、GB2312 不可能 100% 精確,理由是二者有部分編碼區段重疊。 例如: 某字元的兩個 Byte 為 0xb1...
Posted 27 April 2014 07:55 PMJeffrey | with no comments 10,373
Filed under:
Big5-HKSCS編碼補遺
前陣子找到將Big5-HKSCS編碼轉為Unicode的 解決方案 ,實際應用卻發現問題 -- 若字串已是Unicode編碼且混雜其他語系字元,HKSCS_Big5ToUnicode41()便無法招架。 延續上回的例子: 在"滙豐銀行 警衞室"後方故意加上"喆"跟"犇"這兩個BIG5編碼不支援的難字,經轉換後,滙與衞轉對了,喆與犇兩個字卻變成"?"。推敲原因是HKSCS_Big5ToUnicode41()將傳入字串視為Big5...
Posted 07 March 2014 08:28 PMJeffrey | 1 comment(s) 5,279
Filed under:
Big5-HKSCS編碼初探(下)
昨天介紹了 Big5-HKSCS ,初步心得是: Big5-HKSCS跟Big5一樣是歷史的眼淚,新一代Unicode標準已能涵蓋其字元範圍又能同時兼容各國語系。因此,拋棄ANSI規格,回歸Unicode才是王道!! 但這衍生一個需求 -- 若既存文字檔或其他老系統仍採用Big5-HKSCS編碼內容,是否能用.NET程式轉換為Unicode呢? 拿這種問題來問傳說中偉大的中文編碼解碼工具程式作者,是一種羞辱吧? 只見那個其貌不揚的中年男子,右手收在腰後,不屑地伸出左手在鍵盤上飛快地敲了一段程式:...
Posted 28 February 2014 07:08 AMJeffrey | 7 comment(s) 12,780
Filed under:
更多文章 下一頁 »

搜尋

Go

<June 2018>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

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

文章典藏
其他功能

這個部落格


Syndication