in

Darkthread

黑暗執行緒

Browse by Tags

  • JavaScript 中文排序問題

    今天才發現 JavaScript 中文字串排序有個大問題! 下圖是 KendoGrid 在 Chrome 使用 JavaScript 排序的結果,如圖所示,一到七由小到大排序結果為一、七、三、二、五、六、四,既不是依筆劃,也不是依注音: (SQL 的中文定序就區分筆劃跟注音,例如: Chinese_Taiwan_Stroke_CI_AS vs Chinese_Taiwan_Bopomofo_CI_AS 參考 ) 爬文後得知這是 JavaScript 中文字串排序的己知問題(我 Lag 真大),字串型別有個 localeCompare() 可傳入語系參數進行比較,貌似能解決問題但實際不行。 我寫了測試程式如下...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-19-2017
  • 再談集保罕用字集與 BIG5 造字區

    同事遇到集保罕集問題,我試著解釋個中奧妙時冒出一堆「集保罕字的X」「Unicode標準字的X」「看起來一樣但編碼不同」把同事薰得七葷八素,感覺都快吐了… 嗯,寫篇文章細說從頭吧。 很久很久以前,在 Unicode 還沒一統天下之前, BIG5 是台灣地區的主流中文編碼,其中定義 13,053 個常用字與次常用字與 441 個符號。問題來了,有些日常生活會用到的字(最常見是人名)沒被包含在這一萬三千字裡,所以早些年水牛伯還活躍於政壇時不時可在使用 BIG5 的新聞網站看到「游錫方方土」,還有「陶吉吉」大家應該也不陌生 XD (關於 BIG5 與 Unicode 編碼,之前曾在中文編碼解析工具 介紹文...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-17-2017
  • 中文亂碼「嚙踝蕭嚙踝蕭」是怎麼來的?

    在 FB 看到 91 貼了一張照片,提到某廠商的電子報一直存在亂碼問題,寄信人與信件主旨出現一堆嚙調客、嚙踝蕭… 之類的怪字亂碼。 有種畫面上到處是老鼠的感覺… (嚙是 齧 的異體字) 連 Chrome 也想吶喊「有老鼠!Encoding 碰上麻煩了。」 XD 之前寫過一篇 中文亂碼"蕞蕞蕞蕞"是怎麼來的? ,猜想同樣是錯用編碼解析的結果,雖然最近案子忙到火燒屁股,但就看到球滾進了我的守備範圍,還是忍不住研究起老鼠從哪來… XD 用一小段程式驗證問題來自「錯用 UTF8、BIG5 解碼」: 首先將「嚙踝蕭嚙踝蕭」做一次 BIG5 逆轉回 UTF8,得到 ����,� (EF...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-09-2016
  • Hacking樂無窮:修正Dapper+ODP.NET無法寫入Unicode問題

    歷經一段時間摸索歷練,確立「新増修改用EF/ORM,查詢一律用Dapper」的最高指導原則,Dapper的簡潔、效能與彈性無可挑剔,一切看似完美,直到我膝蓋中了一箭… 無意間發現,使用Dapper+ODP.NET無法寫入Unicode字元 跟Oracle Unicode問題奮戰 超過10年 ,以為妖孽已被降伏,用OracleDbType.NVarChar2應該就萬無一失,甚至要在CommandText中用N'…'也 不是問題 ,萬萬沒想到Oracle Unicode問題今天又跑出來咬我屁股。 用以下範例重現問題: using System; using System.Collections...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-21-2016
  • Excel CSV輔助工具強化版-支援換行符號

    避免Excel開啟CSV時截掉左補零的小工具 是我三年前的作品,用來克服Excel開啟CSV時"00001"會變成"1"的問題。最近網友g提供了一個轉換失敗案例,引發我的興趣,檢查CSV後發現幾項問題: CSV內含日文,使用Shift-JIS編碼(ANSI)而非UTF8,當初將所有ANSI檔案視為BIG5,形成亂碼 部分欄位內容夾帶換行符號(如黃底所示),擾亂原本以"\r\n"分隔資料列的解析邏輯 程式未考慮CSV部分欄位自帶雙引號的情況,造成雙引號重複(=""…"")。 用小工具轉換開啟會變成這副德行...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-08-2015
  • 潛盾機-解決VS2015程式檔BIG5相容問題

    改用VS2015後沒多久就發現它處理BIG5(ANSI)編碼程式碼的原則不同於以往(推測與編譯器改用Roslyn有關),導致部分使用BIG5編碼存檔的古老程式檔,會因 許功蓋 造成編譯錯誤。 PO文隔兩天同事跟我說,他們換VS2015後也射了好一陣子茶包,最後爬文又爬回我的文章。XD 後來聊到可以寫程式把所有BIG5編碼程式檔轉成UTF8一勞永逸,同事說檔案沒幾個,手動另存就搞定了,還不需要養乳牛。 這兩天,收到網友留言詢問VS2015是否會修正這個問題;也有網友提到手上專案有成千上萬個cs,改了一個BIG5,還有千千萬萬個BIG5,只好跟VS2015說Goodbye。 首先,雖然不確定VS2015會不會針對此一Issue進行修正...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-06-2015
  • 【茶包射手日記】VS2015程式檔編碼問題

    裝好VS2015後,陸續將VS2013維護的專案改用VS2015開啟,原以為可完全無痛移轉,踩到小刺一根。 某個用VS2013開發多時的專案,移到VS2015出現編譯錯誤!以下面的程式為例: Console.WriteLine那行發生Unrecoginzed escape sequence錯誤。 看到Unrecongized escape又看了看問題字串,程式老骨頭心中警鈴聲大作: 我被「 許功蓋 」偷襲了? 使用Notepad++開啟C#原始檔,果不其然,檔案編碼被設成BIG5(ANSI)。 依開發規範,程式檔都該存成UTF8編碼,避免中文難字或非中文的Unicode字元變成亂碼。出問題的.cs檔案有點歷史...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 07-22-2015
  • Strings.StrConv半形全形轉換注意事項三則

    Microsoft.VisualBasic.Strings.StrConv靜態方法是在.NET轉換半形全形最簡便的做法(即使語言是C#也沒差,在專案加入Microsoft.VisualBasic參照即可),最近實際用在專案,又發現了一些眉角,整理筆記備忘: 在開發機測試OK,丟到測試機執行冒出VbStrConv.Wide and VbStrConv.Narrow are not applicable to the locale specified.錯誤。研究後發現問題出在測試機作業系統語系為英文,轉換中文字串會因語系不符出錯。解決方法為傳入第三個參數指定LCID(未傳入的話會依作業系統語系決定...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 03-05-2015
  • 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文字,故得用UTF-8編碼。沒想到這小小的編碼要求,最後得五關斬六將方能達成。 先來個簡單測試,用Notepad...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 05-23-2014
  • BIG5 GB2312繁簡編碼快篩

    BIG5 與 GB2312 是繁體中文與簡體中文最常採用的 ANSI 形式編碼,當代系統多已改採 Unicode ,但在涉及傳統系統整合的情境中,仍有處理中文 ANSI 編碼的需求。有時,資料來源較雜,BIG5、GB2312 編碼都有可能,系統規劃者多半希望系統能由二進位資料 (Byte Array) 自動判別其編碼為 BIG5 或 GB2312 。就理論而言,以程式判斷 BIG5、GB2312 不可能 100% 精確,理由是二者有部分編碼區段重疊。 例如: 某字元的兩個 Byte 為 0xb1、0xf0,若以 BIG5 編碼解讀為「梗」、以 GB2312 解讀則為「别」,都屬有效字元,此時便無從斷定其編碼...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 04-27-2014
第1頁,共7頁 (61個項目) 1 2 3 4 5 下一頁 > ... 最後一頁 »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems