Category: 中文編碼

有個偵測文字檔是否為BIG5編碼的需求,決定寫個小函數來實現。 要偵測BIG5編碼,有一種寫法是將字串轉為byte[]後再比對0xA440-0xC67E等編碼區間(參考)加以識別;不過,我不太喜歡這類寫法,理由是既然BIG5編碼邏輯細節已存在.NET內建Encoding類別中(可透過Encod...

昨天小談了固定欄寬資料檔解析程式的寫法,有人問到解析之餘要如何產生固定欄寬資料,並提了一些常見但有點機車的需求,例如: 針對數字欄位要能指定數值靠右左方補零(不知為什麼,某些"阿公"很愛用這種不補空白要補零的規格,每次要肉眼除錯時,十來個數字欄位夾雜零零相連到天邊,數位置數到...

跟傳統系統打交道時,XML、JSON等格式多半無用武之地,往往得透過"固定欄寬資料格式"進行資料交換。 在撰寫程式解析固定欄寬資料時,有幾點注意事項: 欄位寬度計算與中文編碼有關,實務上使用BIG5編碼還是大宗(阿公級系統很少能支援Unicode)。 BIG...

為一個使用BIG5編碼的網站寫一小段AJAX Script滿足需求,結果踢到了鐵板。 使用$.get()或$.post()取得後端網頁程式執行內容是很普遍的技巧,但若網頁採BIG5編碼而非UTF-8時,會衍生額外議題。 以下面的網頁為例,我們在按鈕click()事件中使用$.get(loca...

在中文版Windows中,Command Prompt預設使用BIG5編碼,因此檢視UTF-8編碼檔案時會出現亂碼。 今天學會一個指令,chcp,使用chcp加上Code Page代碼,就可切換指定的語系。UTF-8的Code Page是65001,先chcp 65001,再將預設的字型由...

專案裡遇到的特殊需求,有個欄位在程式內部採用Unicode編碼,但要匯出給某個系統接收時,中介資料表卻制定了採Big5編碼的VARCHAR(50)格式,這意味著: 1) Big5編碼的中文字元相當於VARCHAR(2),長度限制應為25個Unicode中文字元 2) 包含Unicode...

之前幫小木頭寫的英文單字測驗,有個小問題。 原本網頁介面上,每個單字只有圖片加英文,配合單字的圖片都是去網路上找的,很難做到100%精準搭配,有時甚至找不到明確符合的(例如: 星期三要用什麼圖片來象徵?),不小心就會變成聯想力考驗。例如,當初女王挑了一張可愛的老鼠卡通圖片(下圖左)當成Rats...

最近專案中引用了Telerik ASP.NET擴充元件AutoComplete輸入欄位,測試時發現偶爾會不聽始喚,輸入文字時無法觸發資料查詢,在Javascript Source Code裡反覆追蹤測試,燃燒了可觀的寶貴春青,終於理出頭緒: 問題在中文輸入法! 過去模糊地知道中文輸入在瀏覽器的鍵盤...

同事反應一個問題,有段程式使用LINQ的OrderBy排序一串中文名稱,在不同主機得到不同結果: string[] pool = "一 二 三 四 五 六 七 到 底 排 成 啥 順 序".Split(' ');Response.Write(string.Join(",", pool.O...

今天是值得紀念的一天!! 多年以來,我一直以為在非Unicode編碼ORACLE資料庫中正確塞入難字的唯一方法,只能透過OracleParameter... 手上有個應用,我寫的.NET程式要接收其他程式傳來的CommandText執行,而其中包含以N'...'方式新增難字內容的指令。無力...

有User反應,用Mac開啟Reporting Service匯出PDF檔,看不到其中的中文字,但英數文字正常。經過一番測試,果不其然就是中文字型問題。 直接整理本次實驗心得供大家參考: RDL報表中,不論將字型名稱設定為"DFKai-SB"或"標楷體",在Windows平台上均可正確顯示標楷體...

學海無涯! 一直以來,要放Unicode文字就得開NVARCHAR欄位的觀念深植我心。直到今天聽一位同事說: 如果Oracle資料庫的字元集設成Unicode,開VARCHAR就好了,不必為Unicode特意開NVARCHAR。 這顛覆了我的認知,但也不確定我根深蒂固的觀念是否隨軟體版本演進早已有...

上回有討論過Excel開啟CSV時的中文編碼問題,今天發現關於.NET處理BOM的幾個特性,再補充三則筆記: 雖然預設UTF8Encoding的encoderShouldEmitUTF8Identifier參數預設為true,但GetBytes()的結果不會包含BOM File.WriteAl...

前幾天同事討論到要將地址資料中的阿拉伯數字都轉成中文大寫(一二三四...),我想起了前些時候看到的Microsoft Visual Studio International Feature Pack 2.0就內建了數字轉中文大寫的功能,試作如下。 程式主要是用Regex去比對出數字(\d+)的...